バイトオブジェクト
これらの関数は、バイトパラメータを予期しているときに TypeError を発生させ、非バイトパラメータで呼び出されます。
- type PyBytesObject
- PyObject のこのサブタイプは、Pythonバイトオブジェクトを表します。
- PyTypeObject PyBytes_Type
- PyTypeObject のこのインスタンスは、Pythonバイトタイプを表します。 Pythonレイヤーの bytes と同じオブジェクトです。
- int PyBytes_Check(PyObject *o)
- オブジェクト o がbytesオブジェクト、またはbytesタイプのサブタイプのインスタンスである場合はtrueを返します。
- int PyBytes_CheckExact(PyObject *o)
- オブジェクト o がbytesオブジェクトであるが、bytesタイプのサブタイプのインスタンスではない場合はtrueを返します。
- PyObject *PyBytes_FromString(const char *v)
- 成功した場合は文字列 v のコピーを値として、失敗した場合は
NULL
を含む新しいバイトオブジェクトを返します。 パラメータ v はNULL
であってはなりません。 チェックされません。
- PyObject *PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)
- 成功した場合は文字列 v のコピーを値と長さ len として、失敗した場合は
NULL
を含む新しいバイトオブジェクトを返します。 v がNULL
の場合、bytesオブジェクトの内容は初期化されていません。
- PyObject *PyBytes_FromFormat(const char *format, ...)
C
printf()
スタイルの format 文字列と可変数の引数を取り、結果のPythonバイトオブジェクトのサイズを計算し、値がフォーマットされたバイトオブジェクトを返します。 可変引数はCタイプである必要があり、 format 文字列のフォーマット文字に正確に対応している必要があります。 次のフォーマット文字を使用できます。文字のフォーマット
タイプ
コメント
%%
該当なし
The literal % character.
%c
int
Cintとして表される1バイト。
%d
int
printf("%d")
と同等です。 1%u
unsigned int
printf("%u")
と同等です。 1%ld
長いです
printf("%ld")
と同等です。 1%lu
unsigned long
printf("%lu")
と同等です。 1%zd
Py_ssize_t
printf("%zd")
と同等です。 1%zu
size_t
printf("%zu")
と同等です。 1%i
int
printf("%i")
と同等です。 1%x
int
printf("%x")
と同等です。 1%s
const char *
ヌル終了C文字配列。
%p
const void *
Cポインターの16進表現。 プラットフォームの
printf
が何を生成するかに関係なく、リテラル0x
で開始することが保証されていることを除いて、printf("%p")
とほぼ同等です。認識されないフォーマット文字により、残りのフォーマット文字列はすべてそのまま結果オブジェクトにコピーされ、余分な引数は破棄されます。
- PyObject *PyBytes_FromFormatV(const char *format, va_list vargs)
- PyBytes_FromFormat()と同じですが、2つの引数を取る点が異なります。
- バッファプロトコルを実装するオブジェクト o のバイト表現を返します。
- Py_ssize_t PyBytes_Size(PyObject *o)
- バイトの長さをバイトオブジェクト 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)
を使用して作成されたばかりでない限り、データを変更してはなりません。 割り当てを解除してはなりません。 o がバイトオブジェクトではない場合、 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
の場合、bytesオブジェクトにnullバイトが埋め込まれていない可能性があります。 含まれている場合、関数は-1
を返し、 ValueError が発生します。バッファは、 obj の内部バッファを参照します。これには、最後に追加のヌルバイトが含まれます(長さではカウントされません)。 オブジェクトが
PyBytes_FromStringAndSize(NULL, size)
を使用して作成されたばかりでない限り、データを変更してはなりません。 割り当てを解除してはなりません。 obj がバイトオブジェクトではない場合、 PyBytes_AsStringAndSize()は-1
を返し、 TypeError を発生させます。バージョン3.5で変更:以前は、bytesオブジェクトで埋め込みヌルバイトが検出されたときに TypeError が発生していました。
- bytes に追加された newpart の内容を含む、 * bytes に新しいbytesオブジェクトを作成します。 呼び出し元は新しい参照を所有します。 bytes の古い値への参照が盗まれます。 新しいオブジェクトを作成できない場合でも、 bytes への古い参照は破棄され、 * bytes の値は
NULL
に設定されます。 適切な例外が設定されます。
- bytes に追加された newpart の内容を含む、 * bytes に新しいbytesオブジェクトを作成します。 このバージョンでは、 newpart の参照カウントが減少します。
- int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)
- 「不変」であっても、バイトオブジェクトのサイズを変更する方法。 これは、まったく新しいバイトオブジェクトを構築するためにのみ使用してください。 バイトがコードの他の部分ですでに認識されている可能性がある場合は、これを使用しないでください。 入力バイトオブジェクトのrefcountが1でない場合、この関数を呼び出すとエラーになります。 既存のbytesオブジェクトのアドレスを左辺値(書き込まれる場合があります)として渡し、新しいサイズを希望します。 成功すると、 * bytes はサイズ変更されたbytesオブジェクトを保持し、
0
が返されます。 * bytes のアドレスは入力値と異なる場合があります。 再割り当てが失敗した場合、 * bytes の元のbytesオブジェクトの割り当てが解除され、 * bytes がNULL
に設定され、 MemoryError が設定され、-1
が返されます。