Làm thế nào để bạn khai báo một biến byte trong python?

Các hàm này tăng TypeError khi mong đợi tham số byte và được gọi với tham số không phải byte

type PyBytesObject

Loại con này của PyObject đại diện cho một đối tượng byte Python

PyTypeObject PyBytes_Type
Một phần của ABI ổn định< . .

Phiên bản này của PyTypeObject đại diện cho loại byte Python;

int PyBytes_Check[PyObject *o]

Return true if the object o is a bytes object or an instance of a subtype of the bytes type. This function always succeeds.

int PyBytes_CheckExact[PyObject *o]

Return true if the object o is a bytes object, but not an instance of a subtype of the bytes type. This function always succeeds.

PyObject *PyBytes_FromString[const char *v]
Return value: New reference. Part of the ABI ổn định .

Trả về một đối tượng byte mới với một bản sao của chuỗi v làm giá trị khi thành công và NULL khi thất bại. Tham số v không được là NULL;

PyObject *PyBytes_FromStringAndSize[const char *v, Py_ssize_t len]
Return value: New reference. Part of the ABI ổn định .

Trả về một đối tượng byte mới với một bản sao của chuỗi v làm giá trị và độ dài len nếu thành công và NULL nếu thất bại. Nếu v là NULL, nội dung của đối tượng bytes chưa được khởi tạo

PyObject *PyBytes_FromFormat[const char *format, ...]
Giá trị trả về. Tài liệu tham khảo mới. Một phần của ABI ổn định .

Lấy một chuỗi định dạng kiểu C printf[] và một số lượng đối số thay đổi, tính toán kích thước của đối tượng byte Python kết quả và trả về một đối tượng byte với các giá trị được định dạng trong đó. Các đối số biến phải là loại C và phải tương ứng chính xác với các ký tự định dạng trong chuỗi định dạng. Các ký tự định dạng sau được cho phép

định dạng ký tự

Loại hình

Bình luận

%%

không có

Ký tự % theo nghĩa đen

PyObject0

int

Một byte đơn, được biểu thị dưới dạng C int

PyObject1

int

Tương đương với PyObject2. 1

PyObject3

int không dấu

Tương đương với PyObject4. 1

PyObject5

Dài

Tương đương với PyObject6. 1

PyObject7

không dấu dài

Tương đương với PyObject8. 1

PyObject9

PyTypeObject0

Tương đương với PyTypeObject1. 1

PyTypeObject2

size_t

Tương đương với PyTypeObject3. 1

PyTypeObject4

int

Tương đương với PyTypeObject5. 1

PyTypeObject6

int

Tương đương với PyTypeObject7. 1

PyTypeObject8

const ký tự *

Một mảng ký tự C kết thúc null

PyTypeObject9

const void*

Biểu diễn hex của con trỏ C. Hầu hết tương đương với bytes0 ngoại trừ việc nó được đảm bảo bắt đầu bằng bytes1 theo nghĩa đen bất kể sản lượng của bytes2 của nền tảng là gì

Một ký tự định dạng không được nhận dạng khiến tất cả phần còn lại của chuỗi định dạng được sao chép nguyên trạng sang đối tượng kết quả và mọi đối số bổ sung bị loại bỏ

1[1,2,3,4,5,6,7,8]

Đối với các chỉ định số nguyên [d, u, ld, lu, zd, zu, i, x]. cờ chuyển đổi 0 có hiệu lực ngay cả khi độ chính xác được cung cấp

PyObject *PyBytes_FromFormatV[const char *format, va_list vargs]
Return value: New reference. Part of the ABI ổn định .

Giống hệt với bytes3 ngoại trừ việc nó nhận đúng hai đối số

PyObject *PyBytes_FromObject[PyObject *o]
Return value: New reference. Part of the ABI ổn định .

Trả về biểu diễn byte của đối tượng o thực hiện giao thức bộ đệm

Py_ssize_t PyBytes_Size[PyObject *o]
Part of the Stable ABI.

Trả về độ dài của byte trong đối tượng byte o

Py_ssize_t PyBytes_GET_SIZE[PyObject *o]

Similar to bytes4, but without error checking.

char *PyBytes_AsString[PyObject *o]
Part of the Stable ABI.

Trả về một con trỏ tới nội dung của o. Con trỏ đề cập đến bộ đệm bên trong của o, bao gồm bytes5 byte. Byte cuối cùng trong bộ đệm luôn là null, bất kể có byte null nào khác hay không. Dữ liệu không được sửa đổi theo bất kỳ cách nào, trừ khi đối tượng vừa được tạo bằng cách sử dụng bytes6. Nó không được thỏa thuận. Nếu o hoàn toàn không phải là đối tượng byte, thì bytes7 trả về NULL và tăng TypeError

char *PyBytes_AS_STRING[PyObject *string]

Similar to bytes7, but without error checking.

int PyBytes_AsStringAndSize[PyObject *obj, char **buffer, Py_ssize_t *length]
Part of the Stable ABI.

Trả về nội dung kết thúc null của đối tượng obj thông qua bộ đệm và độ dài biến đầu ra

Nếu độ dài là NULL, thì đối tượng bytes có thể không chứa các byte rỗng được nhúng;

Bộ đệm đề cập đến bộ đệm bên trong của obj, bao gồm một byte rỗng bổ sung ở cuối [không được tính theo độ dài]. Dữ liệu không được sửa đổi theo bất kỳ cách nào, trừ khi đối tượng vừa được tạo bằng cách sử dụng bytes6. Nó không được thỏa thuận. Nếu obj hoàn toàn không phải là đối tượng byte, thì NULL5 trả về NULL2 và tăng TypeError

Đã thay đổi trong phiên bản 3. 5. Trước đây, TypeError đã được nâng lên khi bắt gặp các byte rỗng được nhúng trong đối tượng byte.

void PyBytes_Concat[PyObject **bytes, PyObject *newpart]
Part of the Stable ABI.

Tạo một đối tượng bytes mới trong *bytes chứa nội dung của phần mới được thêm vào bytes; . Tham chiếu đến giá trị cũ của byte sẽ bị đánh cắp. Nếu không thể tạo đối tượng mới, tham chiếu cũ đến byte sẽ vẫn bị loại bỏ và giá trị của *byte sẽ được đặt thành NULL;

void PyBytes_ConcatAndDel[PyObject **bytes, PyObject *newpart]
Part of the Stable ABI.

Tạo một đối tượng bytes mới trong *bytes chứa nội dung của phần mới được thêm vào bytes. Phiên bản này giảm số lượng tham chiếu của newpart

int _PyBytes_Resize[PyObject **bytes, Py_ssize_t newsize]

A way to resize a bytes object even though it is “immutable”. Only use this to build up a brand new bytes object; don’t use this if the bytes may already be known in other parts of the code. It is an error to call this function if the refcount on the input bytes object is not one. Pass the address of an existing bytes object as an lvalue [it may be written into], and the new size desired. On success, *bytes holds the resized bytes object and NULL0 is returned; the address in *bytes may differ from its input value. If the reallocation fails, the original bytes object at *bytes is deallocated, *bytes is set to NULL, NULL2 is set, and NULL2 is returned.

Chủ Đề