바이트열 객체
*************

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

type PyBytesObject

   이 "PyObject"의 서브 형은 파이썬 바이트열 객체를 나타냅니다.

PyTypeObject PyBytes_Type
    * Part of the Stable ABI.*

   이 "PyTypeObject"의 인스턴스는 파이썬 바이트열 형을 나타냅니다; 파
   이썬 계층의 "bytes"와 같은 객체입니다.

int PyBytes_Check(PyObject *o)

   객체 *o*가 바이트열 객체이거나 바이트열 형의 서브 형의 인스턴스면
   참을 반환합니다. 이 함수는 항상 성공합니다.

int PyBytes_CheckExact(PyObject *o)

   객체 *o*가 바이트열 객체이지만, 바이트열 형의 서브 형의 인스턴스는
   아니면 참을 반환합니다. 이 함수는 항상 성공합니다.

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

   성공하면 값으로 *v* 문자열의 복사본을 갖는 새 바이트열 객체를 반환
   하고, 실패하면 "NULL"을 반환합니다. 매개 변수 *v*는 "NULL"이 아니어
   야 합니다; 검사하지 않습니다.

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

   성공하면 값이 *v* 문자열의 복사본이고 길이가 *len*인 새 바이트열 객
   체를 반환하고, 실패하면 "NULL"을 반환합니다. *v*가 "NULL"이면, 바이
   트열 객체의 내용은 초기화되지 않습니다.

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

   C "printf()"-스타일 *format* 문자열과 가변 개수의 인자를 받아서, 결
   과 파이썬 바이트열 객체의 크기를 계산하고 그 안에 값이 포맷된 바이
   트열 객체를 반환합니다. 가변 인자는 C 형이어야 하며 *format* 문자열
   에 있는 포맷 문자들과 정확히 대응해야 합니다. 허용되는 포맷 문자는
   다음과 같습니다:

   +---------------------+-----------------+----------------------------------+
   | 포맷 문자           | 형              | 주석                             |
   |=====================|=================|==================================|
   | "%%"                | *n/a*           | 리터럴 % 문자.                   |
   +---------------------+-----------------+----------------------------------+
   | "%c"                | int             | 단일 바이트, C int로 표현됩니다. |
   +---------------------+-----------------+----------------------------------+
   | "%d"                | int             | "printf("%d")"와 동등합니다. [1] |
   +---------------------+-----------------+----------------------------------+
   | "%u"                | unsigned int    | "printf("%u")"와 동등합니다. [1] |
   +---------------------+-----------------+----------------------------------+
   | "%ld"               | long            | "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")"와 동등합니다.     |
   +---------------------+-----------------+----------------------------------+

   인식할 수 없는 포맷 문자는 포맷 문자열의 나머지 부분이 모두 결과 객
   체에 그대로 복사되게 만들고, 추가 인자는 무시됩니다.

   [1] 정수 지정자 (d, u, ld, lu, zd, zu, i, x)에서: 0-변환 플래그는
       정밀도를 지정해도 영향을 미칩니다.

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

   정확히 두 개의 인자를 취한다는 것을 제외하고는
   "PyBytes_FromFormat()"과 같습니다.

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

   버퍼 프로토콜을 구현하는 객체 *o*의 바이트열 표현을 반환합니다.

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

   바이트열 객체 *o*의 길이를 반환합니다.

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*의 내용에 대한 포인터를 반환합니다. 포인터는 "len(o) + 1" 바이트
   로 구성된 *o*의 내부 버퍼를 가리킵니다. 버퍼의 마지막 바이트는 다른
   널(null) 바이트가 있는지에 관계없이 항상 널입니다. 객체가
   "PyBytes_FromStringAndSize(NULL, size)"를 사용하여 방금 만들어진 경
   우가 아니면 데이터를 수정해서는 안 됩니다. 할당을 해제해서는 안 됩
   니다. *o*가 바이트열 객체가 아니면, "PyBytes_AsString()"은 "NULL"을
   반환하고 "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.*

   Return the null-terminated contents of the object *obj* through the
   output variables *buffer* and *length*. Returns "0" on success.

   *length*가 "NULL"이면, 바이트열 객체는 내장된 널 바이트를 포함할 수
   없습니다; 만약 그렇다면 함수는 "-1"을 반환하고 "ValueError"를 발생
   시킵니다.

   buffer는 *obj*의 내부 버퍼를 가리키게 되는데, 끝에 추가 널 바이트가
   포함됩니다 (*length*에는 포함되지 않습니다). 객체가
   "PyBytes_FromStringAndSize(NULL, size)"를 사용하여 방금 만들어진 경
   우가 아니면 데이터를 수정해서는 안 됩니다. 할당을 해제해서는 안 됩
   니다. *obj*가 바이트열 객체가 아니면 "PyBytes_AsStringAndSize()"는
   "-1"을 반환하고 "TypeError"를 발생시킵니다.

   버전 3.5에서 변경: 이전에는, 바이트열 객체에 널 바이트가 포함되어
   있으면 "TypeError"가 발생했습니다.

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

   *bytes*에 *newpart*의 내용을 덧붙인 새 바이트열 객체를 **bytes*에
   만듭니다; 호출자가 새 참조를 소유합니다. *bytes*의 예전 값에 대한
   참조를 훔칩니다. 새 객체가 만들어질 수 없으면, *bytes*에 대한 예전
   참조는 여전히 버려지고 **bytes*의 값은 "NULL"로 설정됩니다; 적절한
   예외가 설정됩니다.

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

   Create a new bytes object in **bytes* containing the contents of
   *newpart* appended to *bytes*.  This version releases the *strong
   reference* to *newpart* (i.e. decrements its reference count).

int _PyBytes_Resize(PyObject **bytes, Py_ssize_t newsize)

   Resize a bytes object. *newsize* will be the new length of the
   bytes object. You can think of it as creating a new bytes object
   and destroying the old one, only more efficiently. 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 "0" 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", "MemoryError" is set, and "-1" is returned.
