"binascii" --- 바이너리와 ASCII 간의 변환
*****************************************

======================================================================

"binascii" 모듈에는 바이너리와 다양한 ASCII 인코딩 바이너리 표현 사이
를 변환하는 여러 가지 방법이 포함되어 있습니다. 일반적으로 이러한 함수
는 직접 사용하지 않고, 대신 "uu", "base64" 또는 "binhex"와 같은 래퍼
모듈을 사용합니다. "binascii" 모듈에는 고수준 모듈에서 사용하는 보다
빠른 속도를 위해 C로 작성된 저수준 함수가 들어 있습니다.

참고:

  "a2b_*" 함수는 ASCII 문자만 포함하는 유니코드 문자열을 받아들입니다.
  다른 함수는 *바이트열류 객체*(가령 "bytes", "bytearray" 및 버퍼 프로
  토콜을 지원하는 다른 객체)만 받아들입니다.

  버전 3.3에서 변경: ASCII로만 이루어진 유니코드 문자열은 이제 "a2b_*"
  함수에서 허용됩니다.

"binascii" 모듈은 다음 함수를 정의합니다:

binascii.a2b_uu(string)

   한 줄의 UU 인코딩된 데이터 string을 바이너리로 역변환하고 바이너리
   데이터를 반환합니다. 마지막 줄을 제외하고는, 줄은 보통 45 (바이너리
   ) 바이트를 포함합니다. 줄 데이터 뒤에는 공백 문자가 올 수 있습니다.

binascii.b2a_uu(data, *, backtick=False)

   바이너리 data를 ASCII 문자의 줄로 변환합니다, 반환 값은 개행 문자를
   포함하는 변환 된 줄입니다. *data*의 길이는 최대 45이어야 합니다.
   *backtick*가 참이면, 0은 스페이스 대신 "'`'"으로 표현됩니다.

   버전 3.7에서 변경: *backtick* 매개 변수가 추가되었습니다.

binascii.a2b_base64(string)

   base64 데이터 블록을 바이너리로 역변환하고 바이너리 데이터를 반환합
   니다. 한 번에 한 줄 이상을 전달할 수 있습니다.

binascii.b2a_base64(data, *, newline=True)

   바이너리 data를 base64 코딩으로 ASCII 문자의 줄로 변환합니다. 반환
   값은 변환된 줄인데, *newline*이 참이면, 개행 문자를 포함합니다. 이
   함수의 출력은 **RFC 3548**을 따릅니다.

   버전 3.6에서 변경: *newline* 매개 변수가 추가되었습니다.

binascii.a2b_qp(data, header=False)

   quoted-printable data 블록을 바이너리로 역변환하고 바이너리 데이터
   를 반환합니다. 한 번에 한 줄 이상을 전달할 수 있습니다. 선택적 인자
   *header*가 있고 참이면, 밑줄(underscore)은 스페이스로 디코딩됩니다.

binascii.b2a_qp(data, quotetabs=False, istext=True, header=False)

   바이너리 data를 quoted-printable 인코딩으로 ASCII 문자의 줄로 변환
   합니다. 반환 값은 변환된 줄입니다. 선택적 인자 *quotetabs*가 있고
   참이면, 모든 탭과 스페이스가 인코딩됩니다. 선택적 인자 *istext*가
   있고 참이면, 개행 문자는 인코딩되지 않지만, 후행 공백은 인코딩됩니
   다. 선택적 인자 *header*가 있고 참이면, 스페이스는 **RFC 1522**에
   따라 밑줄로 인코딩됩니다. 선택적 인자 *header*가 있고 거짓이면, 개
   행 문자도 함께 인코딩됩니다; 그렇지 않으면 라인 피드(linefeed) 변환
   이 바이너리 데이터 스트림을 손상할 수 있습니다.

binascii.a2b_hqx(string)

   RLE 압축 해제 없이 binhex4 형식의 ASCII data를 바이너리로 변환합니
   다. 이 문자열에는 완전한 바이너리 바이트가 포함되거나, (binhex4 데
   이터의 마지막 부분에서) 나머지 비트가 0이어야 합니다.

   버전 3.9부터 폐지.

binascii.rledecode_hqx(data)

   binhex4 표준에 따라, data에 대해 RLE 압축 해제를 수행합니다. 이 알
   고리즘은 바이트 다음에 오는 "0x90"을 반복 표시기로 사용하고, 그 뒤
   에 카운트가 옵니다. 카운트 "0"은 바이트 값 "0x90"을 지정합니다. 이
   루틴은 data 입력 데이터가 불완전한 반복 표시기로 끝나지 않는 한(이
   때는 "Incomplete" 예외가 발생합니다) 압축 해제된 데이터를 반환합니
   다.

   버전 3.2에서 변경: 바이트열이나 bytearray 객체만 입력으로 허용합니
   다.

   버전 3.9부터 폐지.

binascii.rlecode_hqx(data)

   binhex4 스타일의 RLE 압축을 *data*에 대해 수행하고 결과를 반환합니
   다.

   버전 3.9부터 폐지.

binascii.b2a_hqx(data)

   hexbin4 바이너리에서 ASCII로의 변환을 수행하고 결과 문자열을 반환합
   니다. 인자는 이미 RLE로 코드화되어 있어야 하며, (마지막 조각을 제외
   하고) 길이가 3의 배수여야 합니다.

   버전 3.9부터 폐지.

binascii.crc_hqx(data, value)

   초기 CRC *value*로 시작하는, *data*의 16비트 CRC 값을 계산하고 결과
   를 반환합니다. 종종 0x1021로 표시되는, CRC-CCITT 다항식 *x*^16 +
   *x*^12 + *x*^5 + 1을 사용합니다. 이 CRC는 binhex4 형식에서 사용됩니
   다.

binascii.crc32(data[, value])

   Compute CRC-32, the unsigned 32-bit checksum of *data*, starting
   with an initial CRC of *value*.  The default initial CRC is zero.
   The algorithm is consistent with the ZIP file checksum.  Since the
   algorithm is designed for use as a checksum algorithm, it is not
   suitable for use as a general hash algorithm.  Use as follows:

      print(binascii.crc32(b"hello world"))
      # Or, in two pieces:
      crc = binascii.crc32(b"hello")
      crc = binascii.crc32(b" world", crc)
      print('crc32 = {:#010x}'.format(crc))

   버전 3.0에서 변경: The result is always unsigned. To generate the
   same numeric value when using Python 2 or earlier, use "crc32(data)
   & 0xffffffff".

binascii.b2a_hex(data[, sep[, bytes_per_sep=1]])
binascii.hexlify(data[, sep[, bytes_per_sep=1]])

   바이너리 *data*의 16진수 표현을 반환합니다. *data*의 모든 바이트는
   해당 2자리 16진수 표현으로 변환됩니다. 따라서 반환된 바이트열 객체
   의 길이는 *data* 의 두 배입니다.

   비슷한 기능(하지만 텍스트 문자열을 반환하는)을 "bytes.hex()" 메서드
   를 사용하여 편리하게 액세스할 수도 있습니다.

   *sep*이 지정되면, 단일 문자 문자열이나 바이트열 객체여야 합니다.
   *bytes_per_sep* 입력 바이트마다 출력에 삽입됩니다. 구분자 배치는 기
   본적으로 출력의 오른쪽 끝에서부터 계산됩니다. 왼쪽부터 계산하려면,
   음수의 *bytes_per_sep* 값을 제공하십시오.

   >>> import binascii
   >>> binascii.b2a_hex(b'\xb9\x01\xef')
   b'b901ef'
   >>> binascii.hexlify(b'\xb9\x01\xef', '-')
   b'b9-01-ef'
   >>> binascii.b2a_hex(b'\xb9\x01\xef', b'_', 2)
   b'b9_01ef'
   >>> binascii.b2a_hex(b'\xb9\x01\xef', b' ', -2)
   b'b901 ef'

   버전 3.8에서 변경: *sep*과 *bytes_per_sep* 매개 변수가 추가되었습니
   다.

binascii.a2b_hex(hexstr)
binascii.unhexlify(hexstr)

   16진수 문자열 *hexstr*로 표현된 바이너리 데이터를 반환합니다. 이 함
   수는 "b2a_hex()"의 역함수입니다. *hexstr*는 짝수개의 16진수(대소문
   자 모두 가능합니다)를 포함해야 하며, 그렇지 않으면 "Error" 예외가
   발생합니다.

   비슷한 기능(텍스트 문자열 인자만 받아들이지만, 공백에 대해 더 느슨
   한)을 "bytes.fromhex()" 클래스 메서드를 사용하여 액세스할 수도 있습
   니다.

exception binascii.Error

   에러 시 발생하는 예외. 이들은 대개 프로그래밍 에러입니다.

exception binascii.Incomplete

   불완전한 데이터에서 발생하는 예외. 이들은 일반적으로 프로그래밍 에
   러가 아니지만, 조금 더 많은 데이터를 읽고 다시 시도하면 처리될 수
   있습니다.

더 보기:

  모듈 "base64"
     RFC 호환 base64 스타일 인코딩으로, 베이스 16, 32, 64 및 85를 지원
     합니다.

  모듈 "binhex"
     매킨토시에서 사용되는 binhex 형식 지원.

  모듈 "uu"
     유닉스에서 사용되는 UU 인코딩 지원.

  모듈 "quopri"
     MIME 전자 우편 메시지에 사용되는 quoted-printable 인코딩 지원.
