The binascii
module in Python provides functions for converting between binary and various ASCII-encoded binary representations. It is useful for encoding binary data into printable ASCII characters and decoding such encodings back into binary data.
Table of Contents
- Introduction
- Key Functions
binascii.a2b_uu
binascii.b2a_uu
binascii.a2b_base64
binascii.b2a_base64
binascii.a2b_hex
binascii.b2a_hex
binascii.hexlify
binascii.unhexlify
binascii.crc32
binascii.b2a_hqx
binascii.a2b_hqx
binascii.b2a_rle
binascii.a2b_rle
- Examples
- UU Encoding and Decoding
- Base64 Encoding and Decoding
- Hexadecimal Encoding and Decoding
- Calculating CRC32 Checksum
- Real-World Use Case
- Conclusion
- References
Introduction
The binascii
module provides a range of functions for converting binary data to ASCII-encoded representations and vice versa. This module is useful for encoding binary data into printable ASCII characters, such as in email or other text-based protocols, and for decoding such encodings back into binary data.
Key Functions
binascii.a2b_uu
Converts a line of ASCII characters encoded using the UU encoding back to binary data.
import binascii
ascii_data = 'begin 644 file.txt\n#0V%T\n \nend\n'
binary_data = binascii.a2b_uu(ascii_data)
print(binary_data)
binascii.b2a_uu
Converts binary data to a line of ASCII characters encoded using the UU encoding.
import binascii
binary_data = b'Hello, World!'
ascii_data = binascii.b2a_uu(binary_data)
print(ascii_data)
binascii.a2b_base64
Converts a base64 ASCII string to binary data.
import binascii
ascii_data = 'SGVsbG8sIFdvcmxkIQ=='
binary_data = binascii.a2b_base64(ascii_data)
print(binary_data)
binascii.b2a_base64
Converts binary data to a base64 ASCII string.
import binascii
binary_data = b'Hello, World!'
ascii_data = binascii.b2a_base64(binary_data)
print(ascii_data)
binascii.a2b_hex
Converts a hexadecimal ASCII string to binary data.
import binascii
ascii_data = '48656c6c6f2c20576f726c6421'
binary_data = binascii.a2b_hex(ascii_data)
print(binary_data)
binascii.b2a_hex
Converts binary data to a hexadecimal ASCII string.
import binascii
binary_data = b'Hello, World!'
ascii_data = binascii.b2a_hex(binary_data)
print(ascii_data)
binascii.hexlify
Converts binary data to a hexadecimal ASCII string.
import binascii
binary_data = b'Hello, World!'
ascii_data = binascii.hexlify(binary_data)
print(ascii_data)
binascii.unhexlify
Converts a hexadecimal ASCII string to binary data.
import binascii
ascii_data = '48656c6c6f2c20576f726c6421'
binary_data = binascii.unhexlify(ascii_data)
print(binary_data)
binascii.crc32
Computes the CRC32 checksum of binary data.
import binascii
binary_data = b'Hello, World!'
checksum = binascii.crc32(binary_data)
print(checksum)
binascii.b2a_hqx
Converts binary data to binhex4 ASCII-encoded format.
import binascii
binary_data = b'Hello, World!'
ascii_data = binascii.b2a_hqx(binary_data)
print(ascii_data)
binascii.a2b_hqx
Converts binhex4 ASCII-encoded format to binary data.
import binascii
ascii_data = b':b&AA<8eA;f$@;&=O<FQD:6YT960N*'
binary_data = binascii.a2b_hqx(ascii_data)
print(binary_data)
binascii.b2a_rle
Encodes binary data to a RLE (Run Length Encoding) ASCII-encoded format.
import binascii
binary_data = b'Hello, World!'
ascii_data = binascii.b2a_rle(binary_data)
print(ascii_data)
binascii.a2b_rle
Decodes RLE (Run Length Encoding) ASCII-encoded format to binary data.
import binascii
ascii_data = b'Hello, World!'
binary_data = binascii.a2b_rle(ascii_data)
print(binary_data)
Examples
UU Encoding and Decoding
import binascii
# UU encode data
binary_data = b'Hello, World!'
ascii_data = binascii.b2a_uu(binary_data)
print('UU Encoded:', ascii_data)
# UU decode data
decoded_data = binascii.a2b_uu(ascii_data)
print('UU Decoded:', decoded_data)
Output:
UU Encoded: b'Hello, World!\n'
UU Decoded: b'Hello, World!'
Base64 Encoding and Decoding
import binascii
# Base64 encode data
binary_data = b'Hello, World!'
ascii_data = binascii.b2a_base64(binary_data)
print('Base64 Encoded:', ascii_data)
# Base64 decode data
decoded_data = binascii.a2b_base64(ascii_data)
print('Base64 Decoded:', decoded_data)
Output:
Base64 Encoded: b'SGVsbG8sIFdvcmxkIQ==\n'
Base64 Decoded: b'Hello, World!'
Hexadecimal Encoding and Decoding
import binascii
# Hex encode data
binary_data = b'Hello, World!'
ascii_data = binascii.b2a_hex(binary_data)
print('Hex Encoded:', ascii_data)
# Hex decode data
decoded_data = binascii.a2b_hex(ascii_data)
print('Hex Decoded:', decoded_data)
Output:
Hex Encoded: b'48656c6c6f2c20576f726c6421'
Hex Decoded: b'Hello, World!'
Calculating CRC32 Checksum
import binascii
# Calculate CRC32 checksum
binary_data = b'Hello, World!'
checksum = binascii.crc32(binary_data)
print('CRC32 Checksum:', checksum)
Output:
CRC32 Checksum: 3964322768
Real-World Use Case
Encoding Binary Data for Email Attachments
When sending binary data via email, it is common to encode it in a text-based format such as base64.
import binascii
def encode_for_email(data):
return binascii.b2a_base64(data).decode('utf-8')
def decode_from_email(data):
return binascii.a2b_base64(data.encode('utf-8'))
binary_data = b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10'
encoded_data = encode_for_email(binary_data)
print('Encoded for Email:', encoded_data)
decoded_data = decode_from_email(encoded_data)
print('Decoded from Email:', decoded_data)
Output:
Encoded for Email: iVBORw0KGgoAAAANSUhEUgAA
Decoded from Email: b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10'
Conclusion
The binascii
module in Python provides a range of functions for encoding and decoding binary data to and from various ASCII-encoded representations. This module is particularly useful for handling binary data in text-based protocols such as email.
Comments
Post a Comment
Leave Comment