バイトオブジェクト¶
下記の関数は、バイトオブジェクトを期待している引数にバイトオブジェクトでないパラメタを指定して呼び出されると、 TypeError を送出します。
-
PyTypeObject
PyBytes_Type¶ この
PyTypeObjectのインスタンスは、Python バイト型を表します; Pythonレイヤのbytesと同じオブジェクトです。
-
PyObject*
PyBytes_FromString(const char *v)¶ - Return value: New reference.
成功時に、文字列 v のコピーを値とする新しいバイトオブジェクトを返し、失敗時に
NULLを返します。 引数 v はNULLであってはなりません; そのチェックは行われません。
-
PyObject*
PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)¶ - Return value: New reference.
成功時に、文字列 v のコピーを値とする長さ len の新しいバイトオブジェクトを返し、失敗時に
NULLを返します。 引数 v がNULLの場合、バイトオブジェクトの中身は初期化されていません。
-
PyObject*
PyBytes_FromFormat(const char *format, ...)¶ - Return value: New reference.
C 関数の
printf()スタイルの format 文字列と可変長の引数を取り、結果のPython バイトオブジェクトのサイズを計算し、値を指定した書式にしたがって変換したバイトオブジェクトを返します。可変長の引数は C のデータ型でなければならず、 format 文字列中のフォーマット文字と厳密に関連付けられていなければなりません。下記のフォーマット文字が使用できます:書式指定文字
型
備考
%%n/a
リテラルの % 文字
%cint
C の整数型で表現される単一のバイト。
%dint
printf("%d")と同等です。 1%uunsigned int
printf("%u")と同等。 1%ldlong
printf("%ld")と同等。 1%luunsigned long
printf("%lu")と同等。 1%zdPy_ssize_t
printf("%zd")と同等。 1%zusize_t
printf("%zu")と同等。 1%iint
printf("%i")と同等。 1%xint
printf("%x")と同等。 1%sconst char*
null で終端された C の文字列。
%pconst void*
C ポインタの 16 進表記。
printf("%p")とほとんど同じですが、プラットフォームにおけるprintfの定義に関わりなく先頭にリテラル0xが付きます。識別できない書式指定文字があった場合、残りの書式文字列はそのまま結果のオブジェクトにコピーされ、残りの引数は無視されます。
-
PyObject*
PyBytes_FromFormatV(const char *format, va_list vargs)¶ - Return value: New reference.
ちょうど2つの引数を取ることを除いて、
PyBytes_FromFormat()と同じです。
-
PyObject*
PyBytes_FromObject(PyObject *o)¶ - Return value: New reference.
バッファプロトコルを実装するオブジェクト o のバイト表現を返します。
-
Py_ssize_t
PyBytes_GET_SIZE(PyObject *o)¶ PyBytes_Size()をマクロで実装したもので、エラーチェックをを行いません。
-
char*
PyBytes_AsString(PyObject *o)¶ o の中身へのポインタを返します。 ポインタは、
len(o) + 1バイトからなる o の内部バッファを参照します。 他に null のバイトがあるかどうかにかかわらず、バッファの最後のバイトは必ず null になります。PyBytes_FromStringAndSize(NULL, size)で生成された場合を除いて、データを修正してはなりません。 またポインタを解放(deallocated)してはなりません。 もし、 o が bytes オブジェクトでなければ、PyBytes_AsString()はNULLを返しTypeErrorを送出します。
-
char*
PyBytes_AS_STRING(PyObject *string)¶ PyBytes_AsString()をマクロで実装したもので、エラーチェックを行いません。
-
int
PyBytes_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)¶ obj のnull 終端された中身を、出力用の変数 buffer と length を介して返します。
length の値が
NULLの場合、バイトオブジェクトが null バイトを含まない可能性があります。その場合、関数は-1を返し、ValueErrorを送出します。buffer は obj の内部バッファを参照していて、これには末尾の null バイトも含んでいます (これは length には数えられません)。 オブジェクトが
PyBytes_FromStringAndSize(NULL, size)で生成された場合を除いて、何があってもデータを改変してはいけません。 オブジェクトを解放 (deallocate) してもいけません。 obj が bytes オブジェクトでなかった場合は、PyBytes_AsStringAndSize()は-1を返しTypeErrorを送出します。バージョン 3.5 で変更: 以前は bytes オブジェクトにヌルバイトが埋め込まれていたときに
TypeErrorを送出していました。
-
void
PyBytes_Concat(PyObject **bytes, PyObject *newpart)¶ newpart の内容を bytes の後ろに連結した新しいバイトオブジェクトを *bytes に生成します。呼び出し側は新しい参照を所有します。 bytes の古い値の参照は盗まれます。 もし新しいオブジェクトが生成できない場合、古い bytes の参照は放棄され、 *bytes の値は
NULLに設定されます; 適切な例外が設定されます。
-
void
PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)¶ newpart の内容を bytes の後ろに連結した新しいバイトオブジェクトを *bytes に生成します; この関数は、 newpart の参照カウントをデクリメントします。
-
int
_PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)¶ 本来 "変更不可能 (immutable)" なバイトオブジェクトをリサイズする方法です。 作成されたばかりのバイトオブジェクトにのみこれをしようしてください; 他のコードですでに使用されている可能性のあるバイトオブジェクトに使用してはいけません。 入力されたバイトオブジェクトの参照カウントが 1 でない場合、この関数はエラーになります。 左辺値として存在する (つまり書き込み可能な) バイトオブジェクトのアドレスを受け取り、新しいサイズを要求します。 成功時には、*bytes はリサイズされたバイトオブジェクトを保持し、
0が返されます; *bytes のアドレスは入力された際のアドレスと異なるかもしれません。 再割り当て (reallocation) が失敗した場合、 *bytes が元々指してしたバイトオブジェクトを解放し、*bytes をNULLに設定し、MemoryErrorを設定し、そして-1が返されます。