bytes 對象?
These functions raise TypeError
when expecting a bytes parameter and
called with a non-bytes parameter.
-
PyTypeObject PyBytes_Type?
- Part of the Stable ABI.
PyTypeObject
的實(shí)例代表一個(gè) Python 字節類(lèi)型,在 Python 層面它與bytes
是相同的對象。
-
int PyBytes_Check(PyObject *o)?
如果對象 o 是一個(gè) bytes 對象或者 bytes 類(lèi)型的子類(lèi)型的實(shí)例則返回真值。 此函數總是會(huì )成功執行。
-
int PyBytes_CheckExact(PyObject *o)?
如果對象 o 是一個(gè) bytes 對象但不是 bytes 類(lèi)型的子類(lèi)型的實(shí)例則返回真值。 此函數總是會(huì )成功執行。
-
PyObject *PyBytes_FromString(const char *v)?
- Return value: New reference. Part of the Stable ABI.
成功時(shí)返回一個(gè)以字符串 v 的副本為值的新字節串對象,失敗時(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 的副本為值且長(cháng)度為 len 的新字節串對象,失敗時(shí)返回
NULL
。 如果 v 為NULL
,則不初始化字節串對象的內容。
-
PyObject *PyBytes_FromFormat(const char *format, ...)?
- Return value: New reference. Part of the Stable ABI.
接受一個(gè) C
printf()
風(fēng)格的 format 字符串和可變數量的參數,計算結果 Python 字節串對象的大小并返回參數值經(jīng)格式化后的字節串對象。 可變數量的參數必須均為 C 類(lèi)型并且必須恰好與 format 字符串中的格式字符相對應。 允許使用下列格式字符串:格式字符
類(lèi)型
注釋
%%
不適用
文字%字符。
%c
int
一個(gè)字節,被表示為一個(gè) C 語(yǔ)言的整型
%d
int
相當于
printf("%d")
. 1%u
unsigned int
相當于
printf("%u")
. 1%ld
長(cháng)整型
相當于
printf("%ld")
. 1%lu
unsigned long
相當于
printf("%lu")
. 1%zd
相當于
printf("%zd")
. 1%zu
size_t
相當于
printf("%zu")
. 1%i
int
相當于
printf("%i")
. 1%x
int
相當于
printf("%x")
. 1%s
const char*
以 null 為終止符的 C 字符數組。
%p
const void*
一個(gè) C 指針的十六進(jìn)制表示形式。 基本等價(jià)于
printf("%p")
但它會(huì )確保以字面值0x
開(kāi)頭,不論系統平臺上printf
的輸出是什么。無(wú)法識別的格式字符會(huì )導致將格式字符串的其余所有內容原樣復制到結果對象,并丟棄所有多余的參數。
-
PyObject *PyBytes_FromFormatV(const char *format, va_list vargs)?
- Return value: New reference. Part of the Stable ABI.
與
PyBytes_FromFormat()
完全相同,除了它需要兩個(gè)參數。
-
PyObject *PyBytes_FromObject(PyObject *o)?
- Return value: New reference. Part of the Stable ABI.
返回字節表示實(shí)現緩沖區協(xié)議的對象*o*。
-
Py_ssize_t PyBytes_Size(PyObject *o)?
- Part of the Stable ABI.
返回字節對象*o*中字節的長(chá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.
返回對應 o 的內容的指針。 該指針指向 o 的內部緩沖區,其中包含
len(o) + 1
個(gè)字節。 緩沖區的最后一個(gè)字節總是為空,不論是否存在其他空字節。 該數據不可通過(guò)任何形式來(lái)修改,除非是剛使用PyBytes_FromStringAndSize(NULL, size)
創(chuàng )建該對象。 它不可被撤銷(xiāo)分配。 如果 o 根本不是一個(gè)字節串對象,則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ò)輸出變量 buffer 和 length 返回以 null 為終止符的對象 obj 的內容。
如果 length 為
NULL
,字節串對象就不包含嵌入的空字節;如果包含,則該函數將返回-1
并引發(fā)ValueError
。該緩沖區指向 obj 的內部緩沖,它的末尾包含一個(gè)額外的空字節(不算在 length 當中)。 該數據不可通過(guò)任何方式來(lái)修改,除非是剛使用
PyBytes_FromStringAndSize(NULL, size)
創(chuàng )建該對象。 它不可被撤銷(xiāo)分配。 如果 obj 根本不是一個(gè)字節串對象,則PyBytes_AsStringAndSize()
將返回-1
并引發(fā)TypeError
。在 3.5 版更改: 以前,當字節串對象中出現嵌入的空字節時(shí)將引發(fā)
TypeError
。
-
void PyBytes_Concat(PyObject **bytes, PyObject *newpart)?
- Part of the Stable ABI.
在 *bytes 中創(chuàng )建新的字節串對象,其中包含添加到 bytes 的 newpart 的內容;調用者將獲得新的引用。 對 bytes 原值的引用將被收回。 如果無(wú)法創(chuàng )建新對象,對 bytes 的舊引用仍將被丟棄且 *bytes 的值將被設為
NULL
;并將設置適當的異常。
-
void PyBytes_ConcatAndDel(PyObject **bytes, PyObject *newpart)?
- Part of the Stable ABI.
在 *bytes 中創(chuàng )建新的字節串對象,其中包含添加到 bytes 的 newpart 的內容。 此版本會(huì )減少 newpart 的引用計數。
-
int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)?
改變字節串大小的一種方式,即使其為“不可變對象”。 此方式僅用于創(chuàng )建全新的字節串對象;如果字節串在代碼的其他部分已知則不可使用此方式。 如果輸入字節串對象的引用計數不為一則調用此函數將報錯。 傳入一個(gè)現有字節串對象的地址作為 lvalue(它可能會(huì )被寫(xiě)入),并傳入希望的新大小。 當成功時(shí),*bytes 將存放改變大小后的字節串對象并返回
0
;*bytes 中的地址可能與其輸入值不同。 如果重新分配失敗,則 *bytes 上的原字節串對象將被撤銷(xiāo)分配,*bytes 會(huì )被設為NULL
,同時(shí)設置MemoryError
并返回-1
。