バイトオブジェクト¶
下記の関数は、バイトオブジェクトを期待している引数にバイトオブジェクトでないパラメタを指定して呼び出されると、 TypeError を送出します。
CPython 実装の詳細: The internal buffer of PyBytesObject always includes an extra
trailing null byte for compatibility with null terminated C strings.
This extra byte is not counted in PyBytes_Size() nor in the
various length and size arguments of the functions below.
-
PyTypeObject PyBytes_Type¶
- 次に属します: Stable ABI.
この
PyTypeObjectのインスタンスは、Python バイト型を表します; Pythonレイヤのbytesと同じオブジェクトです。
-
int PyBytes_Check(PyObject *o)¶
オブジェクト o が bytes オブジェクトか bytes 型のサブタイプのインスタンスである場合に真を返します。この関数は常に成功します。
-
int PyBytes_CheckExact(PyObject *o)¶
オブジェクト o が bytes オブジェクトだが bytes 型のサブタイプのインスタンスでない場合に真を返します。この関数は常に成功します。
-
PyObject *PyBytes_FromString(const char *v)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
成功時に、文字列 v のコピーを値とする新しいバイトオブジェクトを返し、失敗時に
NULLを返します。 引数 v はNULLであってはなりません; そのチェックは行われません。
-
PyObject *PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
成功時に、文字列 v のコピーを値とする長さ len の新しいバイトオブジェクトを返し、失敗時に
NULLを返します。 引数 v がNULLの場合、バイトオブジェクトの中身は初期化されていません。
-
PyObject *PyBytes_FromFormat(const char *format, ...)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
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]%zdprintf("%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)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
ちょうど2つの引数を取ることを除いて、
PyBytes_FromFormat()と同じです。
-
PyObject *PyBytes_FromObject(PyObject *o)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
バッファプロトコルを実装するオブジェクト o のバイト表現を返します。
-
Py_ssize_t PyBytes_Size(PyObject *o)¶
- 次に属します: Stable ABI.
バイトオブジェクト o のバイト単位の長さを返します。
-
Py_ssize_t PyBytes_GET_SIZE(PyObject *o)¶
PyBytes_Size()に似ていますが、エラーチェックを行いません。
-
char *PyBytes_AsString(PyObject *o)¶
- 次に属します: Stable ABI.
o の内容へのポインタを返します。 このポインタは
len(o) + 1バイトからなる o の内部バッファを参照します。 内部に他の null バイトがあるかどうかにかかわらず、バッファの最後のバイトは常に null です。PyBytes_FromStringAndSize(NULL, size)で作成したばかりのオブジェクトでない限り、データを変更してはいけません。 このバッファを解放してはいけません。 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)¶
- 次に属します: Stable ABI.
出力変数 buffer と length を通じて、オブジェクト obj の null 終端された内容を返します。 成功すると
0を返します。length が
NULLの場合、bytes オブジェクトの内部に null バイトが含まれていてはいけません。 含まれている場合は-1を返し、ValueErrorを送出します。bufferは obj の内部バッファを参照します。 このバッファには末尾に追加の null バイトが含まれます (length には数えません)。PyBytes_FromStringAndSize(NULL, size)で作成したばかりのオブジェクトでない限り、データを変更してはいけません。 このバッファを解放してはいけません。 obj が bytes オブジェクトでなければ、PyBytes_AsStringAndSize()は-1を返し、TypeErrorを送出します。バージョン 3.5 で変更: 以前は bytes オブジェクトにヌルバイトが埋め込まれていたときに
TypeErrorを送出していました。
-
void PyBytes_Concat(PyObject **bytes, PyObject *newpart)¶
- 次に属します: Stable ABI.
Create a new bytes object in *bytes containing the contents of newpart appended to bytes; the caller will own the new reference. The reference to the old value of bytes will be "stolen". If the new object cannot be created, the old reference to bytes will still be "stolen", the value of *bytes will be set to
NULL, and the appropriate exception will be set.
-
void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)¶
- 次に属します: Stable ABI.
bytes の内容に newpart の内容を追加した新しい bytes オブジェクトを *bytes に作成します。 この関数は newpart への 強参照 を解放します (つまり参照カウントを減らします)。
-
int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)¶
bytes オブジェクトのサイズを変更します。 newsize が bytes オブジェクトの新しい長さになります。 新しい bytes オブジェクトを作成して古いものを破棄する操作を、より効率よく行うものと考えることができます。 既存の bytes オブジェクトのアドレスを左辺値 (書き込みが行われる可能性があります) として渡し、希望する新しいサイズを指定します。 成功すると *bytes はサイズ変更後の bytes オブジェクトを保持し、
0を返します。 *bytes のアドレスは入力時の値と異なる場合があります。 再割り当てに失敗すると、*bytes の元の bytes オブジェクトを解放し、*bytes にNULLを設定し、MemoryErrorを設定して-1を返します。
-
PyObject *PyBytes_Repr(PyObject *bytes, int smartquotes)¶
- 次に属します: Stable ABI.
Get the string representation of bytes. This function is currently used to implement
bytes.__repr__()in Python.This function does not do type checking; it is undefined behavior to pass bytes as a non-bytes object or
NULL.If smartquotes is true, the representation will use a double-quoted string instead of single-quoted string when single-quotes are present in bytes. For example, the byte string
'Python'would be represented asb"'Python'"when smartquotes is true, orb'\'Python\''when it is false.On success, this function returns a strong reference to a
strobject containing the representation. On failure, this returnsNULLwith an exception set.
-
PyObject *PyBytes_DecodeEscape(const char *s, Py_ssize_t len, const char *errors, Py_ssize_t unicode, const char *recode_encoding)¶
- 次に属します: Stable ABI.
Unescape a backslash-escaped string s. s must not be
NULL. len must be the size of s.errors must be one of
"strict","replace", or"ignore". If errors isNULL, then"strict"is used by default.On success, this function returns a strong reference to a Python
bytesobject containing the unescaped string. On failure, this function returnsNULLwith an exception set.バージョン 3.9 で変更: unicode and recode_encoding are now unused.