バイトオブジェクト—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/c-api/bytes
移動先:案内検索

バイトオブジェクト

これらの関数は、バイトパラメータを予期しているときに 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を含む新しいバイトオブジェクトを返します。 パラメータ vNULLであってはなりません。 チェックされません。
PyObject *PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)
成功した場合は文字列 v のコピーを値と長さ len として、失敗した場合はNULLを含む新しいバイトオブジェクトを返します。 vNULLの場合、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")とほぼ同等です。

認識されないフォーマット文字により、残りのフォーマット文字列はすべてそのまま結果オブジェクトにコピーされ、余分な引数は破棄されます。

1123456 、[ X67X] 7 、 8

整数指定子(d、u、ld、lu、zd、zu、i、x)の場合:精度が指定されている場合でも、0変換フラグが有効になります。

PyObject *PyBytes_FromFormatV(const char *format, va_list vargs)
PyBytes_FromFormat()と同じですが、2つの引数を取る点が異なります。
PyObject *PyBytes_FromObject(PyObject *o)
バッファプロトコルを実装するオブジェクト 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 を介して返します。

lengthNULLの場合、bytesオブジェクトにnullバイトが埋め込まれていない可能性があります。 含まれている場合、関数は-1を返し、 ValueError が発生します。

バッファは、 obj の内部バッファを参照します。これには、最後に追加のヌルバイトが含まれます(長さではカウントされません)。 オブジェクトがPyBytes_FromStringAndSize(NULL, size)を使用して作成されたばかりでない限り、データを変更してはなりません。 割り当てを解除してはなりません。 obj がバイトオブジェクトではない場合、 PyBytes_AsStringAndSize()-1を返し、 TypeError を発生させます。

バージョン3.5で変更:以前は、bytesオブジェクトで埋め込みヌルバイトが検出されたときに TypeError が発生していました。

void PyBytes_Concat(PyObject **bytes, PyObject *newpart)
bytes に追加された newpart の内容を含む、 * bytes に新しいbytesオブジェクトを作成します。 呼び出し元は新しい参照を所有します。 bytes の古い値への参照が盗まれます。 新しいオブジェクトを作成できない場合でも、 bytes への古い参照は破棄され、 * bytes の値はNULLに設定されます。 適切な例外が設定されます。
void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)
bytes に追加された newpart の内容を含む、 * bytes に新しいbytesオブジェクトを作成します。 このバージョンでは、 newpart の参照カウントが減少します。
int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)
「不変」であっても、バイトオブジェクトのサイズを変更する方法。 これは、まったく新しいバイトオブジェクトを構築するためにのみ使用してください。 バイトがコードの他の部分ですでに認識されている可能性がある場合は、これを使用しないでください。 入力バイトオブジェクトのrefcountが1でない場合、この関数を呼び出すとエラーになります。 既存のbytesオブジェクトのアドレスを左辺値(書き込まれる場合があります)として渡し、新しいサイズを希望します。 成功すると、 * bytes はサイズ変更されたbytesオブジェクトを保持し、0が返されます。 * bytes のアドレスは入力値と異なる場合があります。 再割り当てが失敗した場合、 * bytes の元のbytesオブジェクトの割り当てが解除され、 * bytesNULLに設定され、 MemoryError が設定され、 -1が返されます。