binascii
— Convert between binary and ASCIIThe binascii
module contains a number of methods to convert between
binary and various ASCII-encoded binary representations. Normally, you will not
use these functions directly but use wrapper modules like uu
,
base64
, or binhex
instead. The binascii
module contains
low-level functions written in C for greater speed that are used by the
higher-level modules.
Note
a2b_*
functions accept Unicode strings containing only ASCII characters.
Other functions only accept bytes-like objects (such as
bytes
, bytearray
and other objects that support the buffer
protocol).
Changed in version 3.3: ASCII-only unicode strings are now accepted by the a2b_*
functions.
The binascii
module defines the following functions:
binascii.
a2b_uu
(string)binascii.
b2a_uu
(data, *, backtick=False)Convert binary data to a line of ASCII characters, the return value is the
converted line, including a newline char. The length of data should be at most
45. If backtick is true, zeros are represented by '`'
instead of spaces.
Changed in version 3.7: Added the backtick parameter.
binascii.
a2b_base64
(string)binascii.
b2a_base64
(data, *, newline=True)Convert binary data to a line of ASCII characters in base64 coding. The return value is the converted line, including a newline char if newline is true. The output of this function conforms to RFC 3548.
Changed in version 3.6: Added the newline parameter.
binascii.
a2b_qp
(data, header=False)binascii.
b2a_qp
(data, quotetabs=False, istext=True, header=False)binascii.
a2b_hqx
(string)Convert binhex4 formatted ASCII data to binary, without doing RLE-decompression. The string should contain a complete number of binary bytes, or (in case of the last portion of the binhex4 data) have the remaining bits zero.
Deprecated since version 3.9.
binascii.
rledecode_hqx
(data)Perform RLE-decompression on the data, as per the binhex4 standard. The
algorithm uses 0x90
after a byte as a repeat indicator, followed by a count.
A count of 0
specifies a byte value of 0x90
. The routine returns the
decompressed data, unless data input data ends in an orphaned repeat indicator,
in which case the Incomplete
exception is raised.
Changed in version 3.2: Accept only bytestring or bytearray objects as input.
Deprecated since version 3.9.
binascii.
rlecode_hqx
(data)Perform binhex4 style RLE-compression on data and return the result.
Deprecated since version 3.9.
binascii.
b2a_hqx
(data)Perform hexbin4 binary-to-ASCII translation and return the resulting string. The argument should already be RLE-coded, and have a length divisible by 3 (except possibly the last fragment).
Deprecated since version 3.9.
binascii.
crc_hqx
(data, value)binascii.
crc32
(data[, value])Compute CRC-32, the 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))
Changed in version 3.0: The result is always unsigned.
To generate the same numeric value across all Python versions and
platforms, use crc32(data) & 0xffffffff
.
binascii.
b2a_hex
(data[, sep[, bytes_per_sep=1]])binascii.
hexlify
(data[, sep[, bytes_per_sep=1]])Return the hexadecimal representation of the binary data. Every byte of data is converted into the corresponding 2-digit hex representation. The returned bytes object is therefore twice as long as the length of data.
Similar functionality (but returning a text string) is also conveniently
accessible using the bytes.hex()
method.
If sep is specified, it must be a single character str or bytes object. It will be inserted in the output after every bytes_per_sep input bytes. Separator placement is counted from the right end of the output by default, if you wish to count from the left, supply a negative bytes_per_sep value.
>>> 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'
Changed in version 3.8: The sep and bytes_per_sep parameters were added.
binascii.
a2b_hex
(hexstr)binascii.
unhexlify
(hexstr)Return the binary data represented by the hexadecimal string hexstr. This
function is the inverse of b2a_hex()
. hexstr must contain an even number
of hexadecimal digits (which can be upper or lower case), otherwise an
Error
exception is raised.
Similar functionality (accepting only text string arguments, but more
liberal towards whitespace) is also accessible using the
bytes.fromhex()
class method.
binascii.
Error
binascii.
Incomplete