bytes 對(duì)象?

These functions raise TypeError when expecting a bytes parameter and called with a non-bytes parameter.

type PyBytesObject?

這種 PyObject 的子類(lèi)型表示一個(gè) Python 字節(jié)對(duì)象。

PyTypeObject PyBytes_Type?
Part of the Stable ABI.

PyTypeObject 的實(shí)例代表一個(gè) Python 字節(jié)類(lèi)型,在 Python 層面它與 bytes 是相同的對(duì)象。

int PyBytes_Check(PyObject *o)?

如果對(duì)象 o 是一個(gè) bytes 對(duì)象或者 bytes 類(lèi)型的子類(lèi)型的實(shí)例則返回真值。 此函數(shù)總是會(huì)成功執(zhí)行。

int PyBytes_CheckExact(PyObject *o)?

如果對(duì)象 o 是一個(gè) bytes 對(duì)象但不是 bytes 類(lèi)型的子類(lèi)型的實(shí)例則返回真值。 此函數(shù)總是會(huì)成功執(zhí)行。

PyObject *PyBytes_FromString(const char *v)?
Return value: New reference. Part of the Stable ABI.

成功時(shí)返回一個(gè)以字符串 v 的副本為值的新字節(jié)串對(duì)象,失敗時(shí)返回 NULL。 形參 v 不可為 NULL;它不會(huì)被檢查。

PyObject *PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)?
Return value: New reference. Part of the Stable ABI.

成功時(shí)返回一個(gè)以字符串 v 的副本為值且長(zhǎng)度為 len 的新字節(jié)串對(duì)象,失敗時(shí)返回 NULL。 如果 vNULL,則不初始化字節(jié)串對(duì)象的內(nèi)容。

PyObject *PyBytes_FromFormat(const char *format, ...)?
Return value: New reference. Part of the Stable ABI.

接受一個(gè) C printf() 風(fēng)格的 format 字符串和可變數(shù)量的參數(shù),計(jì)算結(jié)果 Python 字節(jié)串對(duì)象的大小并返回參數(shù)值經(jīng)格式化后的字節(jié)串對(duì)象。 可變數(shù)量的參數(shù)必須均為 C 類(lèi)型并且必須恰好與 format 字符串中的格式字符相對(duì)應(yīng)。 允許使用下列格式字符串:

格式字符

類(lèi)型

注釋

%%

不適用

文字%字符。

%c

int

一個(gè)字節(jié),被表示為一個(gè) C 語(yǔ)言的整型

%d

int

相當(dāng)于 printf("%d"). 1

%u

unsigned int

相當(dāng)于 printf("%u"). 1

%ld

長(zhǎng)整型

相當(dāng)于 printf("%ld"). 1

%lu

unsigned long

相當(dāng)于 printf("%lu"). 1

%zd

Py_ssize_t

相當(dāng)于 printf("%zd"). 1

%zu

size_t

相當(dāng)于 printf("%zu"). 1

%i

int

相當(dāng)于 printf("%i"). 1

%x

int

相當(dāng)于 printf("%x"). 1

%s

const char*

以 null 為終止符的 C 字符數(shù)組。

%p

const void*

一個(gè) C 指針的十六進(jìn)制表示形式。 基本等價(jià)于 printf("%p") 但它會(huì)確保以字面值 0x 開(kāi)頭,不論系統(tǒng)平臺(tái)上 printf 的輸出是什么。

無(wú)法識(shí)別的格式字符會(huì)導(dǎo)致將格式字符串的其余所有內(nèi)容原樣復(fù)制到結(jié)果對(duì)象,并丟棄所有多余的參數(shù)。

1(1,2,3,4,5,6,7,8)

對(duì)于整數(shù)說(shuō)明符(d,u,ld,lu,zd,zu,i,x):當(dāng)給出精度時(shí),0 轉(zhuǎn)換標(biāo)志是有效的。

PyObject *PyBytes_FromFormatV(const char *format, va_list vargs)?
Return value: New reference. Part of the Stable ABI.

PyBytes_FromFormat() 完全相同,除了它需要兩個(gè)參數(shù)。

PyObject *PyBytes_FromObject(PyObject *o)?
Return value: New reference. Part of the Stable ABI.

返回字節(jié)表示實(shí)現(xiàn)緩沖區(qū)協(xié)議的對(duì)象*o*。

Py_ssize_t PyBytes_Size(PyObject *o)?
Part of the Stable ABI.

返回字節(jié)對(duì)象*o*中字節(jié)的長(zhǎng)度。

Py_ssize_t PyBytes_GET_SIZE(PyObject *o)?

Similar to PyBytes_Size(), but without error checking.

char *PyBytes_AsString(PyObject *o)?
Part of the Stable ABI.

返回對(duì)應(yīng) o 的內(nèi)容的指針。 該指針指向 o 的內(nèi)部緩沖區(qū),其中包含 len(o) + 1 個(gè)字節(jié)。 緩沖區(qū)的最后一個(gè)字節(jié)總是為空,不論是否存在其他空字節(jié)。 該數(shù)據(jù)不可通過(guò)任何形式來(lái)修改,除非是剛使用 PyBytes_FromStringAndSize(NULL, size) 創(chuàng)建該對(duì)象。 它不可被撤銷(xiāo)分配。 如果 o 根本不是一個(gè)字節(jié)串對(duì)象,則 PyBytes_AsString() 將返回 NULL 并引發(fā) TypeError。

char *PyBytes_AS_STRING(PyObject *string)?

Similar to PyBytes_AsString(), but without error checking.

int PyBytes_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)?
Part of the Stable ABI.

通過(guò)輸出變量 bufferlength 返回以 null 為終止符的對(duì)象 obj 的內(nèi)容。

如果 lengthNULL,字節(jié)串對(duì)象就不包含嵌入的空字節(jié);如果包含,則該函數(shù)將返回 -1 并引發(fā) ValueError。

該緩沖區(qū)指向 obj 的內(nèi)部緩沖,它的末尾包含一個(gè)額外的空字節(jié)(不算在 length 當(dāng)中)。 該數(shù)據(jù)不可通過(guò)任何方式來(lái)修改,除非是剛使用 PyBytes_FromStringAndSize(NULL, size) 創(chuàng)建該對(duì)象。 它不可被撤銷(xiāo)分配。 如果 obj 根本不是一個(gè)字節(jié)串對(duì)象,則 PyBytes_AsStringAndSize() 將返回 -1 并引發(fā) TypeError

在 3.5 版更改: 以前,當(dāng)字節(jié)串對(duì)象中出現(xiàn)嵌入的空字節(jié)時(shí)將引發(fā) TypeError。

void PyBytes_Concat(PyObject **bytes, PyObject *newpart)?
Part of the Stable ABI.

*bytes 中創(chuàng)建新的字節(jié)串對(duì)象,其中包含添加到 bytesnewpart 的內(nèi)容;調(diào)用者將獲得新的引用。 對(duì) bytes 原值的引用將被收回。 如果無(wú)法創(chuàng)建新對(duì)象,對(duì) bytes 的舊引用仍將被丟棄且 *bytes 的值將被設(shè)為 NULL;并將設(shè)置適當(dāng)?shù)漠惓!?/p>

void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)?
Part of the Stable ABI.

*bytes 中創(chuàng)建新的字節(jié)串對(duì)象,其中包含添加到 bytesnewpart 的內(nèi)容。 此版本會(huì)減少 newpart 的引用計(jì)數(shù)。

int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)?

改變字節(jié)串大小的一種方式,即使其為“不可變對(duì)象”。 此方式僅用于創(chuàng)建全新的字節(jié)串對(duì)象;如果字節(jié)串在代碼的其他部分已知?jiǎng)t不可使用此方式。 如果輸入字節(jié)串對(duì)象的引用計(jì)數(shù)不為一則調(diào)用此函數(shù)將報(bào)錯(cuò)。 傳入一個(gè)現(xiàn)有字節(jié)串對(duì)象的地址作為 lvalue(它可能會(huì)被寫(xiě)入),并傳入希望的新大小。 當(dāng)成功時(shí),*bytes 將存放改變大小后的字節(jié)串對(duì)象并返回 0;*bytes 中的地址可能與其輸入值不同。 如果重新分配失敗,則 *bytes 上的原字節(jié)串對(duì)象將被撤銷(xiāo)分配,*bytes 會(huì)被設(shè)為 NULL,同時(shí)設(shè)置 MemoryError 并返回 -1