Bytes Objects¶
These functions raiseTypeError when expecting a bytes parameter and arecalled with a non-bytes parameter.
- PyTypeObject
PyBytes_Type¶ This instance of
PyTypeObjectrepresents the Python bytes type; itis the same object asbytesin the Python layer.
- int
PyBytes_Check(PyObject *o)¶ Return true if the objecto is a bytes object or an instance of a subtypeof the bytes type.
- int
PyBytes_CheckExact(PyObject *o)¶ Return true if the objecto is a bytes object, but not an instance of asubtype of the bytes type.
- PyObject*
PyBytes_FromString(const char *v)¶ - Return value: New reference.
Return a new bytes object with a copy of the stringv as value on success,and
NULLon failure. The parameterv must not beNULL; it will not bechecked.
- PyObject*
PyBytes_FromStringAndSize(const char *v, Py_ssize_t len)¶ - Return value: New reference.
Return a new bytes object with a copy of the stringv as value and lengthlen on success, and
NULLon failure. Ifv isNULL, the contents ofthe bytes object are uninitialized.
- PyObject*
PyBytes_FromFormat(const char *format, ...)¶ - Return value: New reference.
Take a C
printf()-styleformat string and a variable number ofarguments, calculate the size of the resulting Python bytes object and returna bytes object with the values formatted into it. The variable argumentsmust be C types and must correspond exactly to the format characters in theformat string. The following format characters are allowed:Format Characters
Type
Comment
%%n/a
The literal % character.
%cint
A single byte,represented as a C int.
%dint
Equivalent to
printf("%d").1%uunsigned int
Equivalent to
printf("%u").1%ldlong
Equivalent to
printf("%ld").1%luunsigned long
Equivalent to
printf("%lu").1%zdPy_ssize_t
Equivalent to
printf("%zd").1%zusize_t
Equivalent to
printf("%zu").1%iint
Equivalent to
printf("%i").1%xint
Equivalent to
printf("%x").1%sconst char*
A null-terminated C characterarray.
%pconst void*
The hex representation of a Cpointer. Mostly equivalent to
printf("%p")except thatit is guaranteed to start withthe literal0xregardlessof what the platform’sprintfyields.An unrecognized format character causes all the rest of the format string to becopied as-is to the result object, and any extra arguments discarded.
- PyObject*
PyBytes_FromFormatV(const char *format, va_list vargs)¶ - Return value: New reference.
Identical to
PyBytes_FromFormat()except that it takes exactly twoarguments.
- PyObject*
PyBytes_FromObject(PyObject *o)¶ - Return value: New reference.
Return the bytes representation of objecto that implements the bufferprotocol.
- Py_ssize_t
PyBytes_GET_SIZE(PyObject *o)¶ Macro form of
PyBytes_Size()but without error checking.
- char*
PyBytes_AsString(PyObject *o)¶ Return a pointer to the contents ofo. The pointerrefers to the internal buffer ofo, which consists of
len(o)+1bytes. The last byte in the buffer is always null, regardless ofwhether there are any other null bytes. The data must not bemodified in any way, unless the object was just created usingPyBytes_FromStringAndSize(NULL,size). It must not be deallocated. Ifo is not a bytes object at all,PyBytes_AsString()returnsNULLand raisesTypeError.
- char*
PyBytes_AS_STRING(PyObject *string)¶ Macro form of
PyBytes_AsString()but without error checking.
- int
PyBytes_AsStringAndSize(PyObject *obj, char **buffer, Py_ssize_t *length)¶ Return the null-terminated contents of the objectobjthrough the output variablesbuffer andlength.
Iflength is
NULL, the bytes objectmay not contain embedded null bytes;if it does, the function returns-1and aValueErroris raised.The buffer refers to an internal buffer ofobj, which includes anadditional null byte at the end (not counted inlength). The datamust not be modified in any way, unless the object was just created using
PyBytes_FromStringAndSize(NULL,size). It must not be deallocated. Ifobj is not a bytes object at all,PyBytes_AsStringAndSize()returns-1and raisesTypeError.Changed in version 3.5:Previously,
TypeErrorwas raised when embedded null bytes wereencountered in the bytes object.
- void
PyBytes_Concat(PyObject **bytes,PyObject *newpart)¶ Create a new bytes object in*bytes containing the contents ofnewpartappended tobytes; the caller will own the new reference. The reference tothe old value ofbytes will be stolen. If the new object cannot becreated, the old reference tobytes will still be discarded and the valueof*bytes will be set to
NULL; the appropriate exception will be set.
- void
PyBytes_ConcatAndDel(PyObject **bytes,PyObject *newpart)¶ Create a new bytes object in*bytes containing the contents ofnewpartappended tobytes. This version decrements the reference count ofnewpart.
- int
_PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)¶ A way to resize a bytes object even though it is “immutable”. Only use thisto build up a brand new bytes object; don’t use this if the bytes may alreadybe known in other parts of the code. It is an error to call this function ifthe refcount on the input bytes object is not one. Pass the address of anexisting bytes object as an lvalue (it may be written into), and the new sizedesired. On success,*bytes holds the resized bytes object and
0isreturned; the address in*bytes may differ from its input value. If thereallocation fails, the original bytes object at*bytes is deallocated,*bytes is set toNULL,MemoryErroris set, and-1isreturned.