原文链接:http://www.juzicode.com/python-module-binascii
binascii是Python标准库中的二进制数据处理模块,提供二进制与ASCII编码之间的转换方法,支持十六进制、Base64、UU编码等多种格式,常用于网络协议、文件格式处理和加密算法实现。
应用场景
- 网络协议数据封装/解析
- 图片/文件Base64编码传输
- 十六进制数据转换
- 数据完整性校验(CRC)
- 二进制数据可视化展示
- 传统编码格式处理(如UUencode)
导入模块
# juzicode.com/VX公众号:juzicode
import binascii
基本用法
1)十六进制编解码
二进制与十六进制字符串相互转换,适用于硬件通信协议处理。
# juzicode.com/VX公众号:juzicode
import binascii
data = b'juzicode.com'
hex_str = binascii.b2a_hex(data).decode()
print(f"十六进制编码: {hex_str}")
binary_data = binascii.a2b_hex('6a757a69636f64652e636f6d')
print(f"解码结果: {binary_data}")
运行结果:
十六进制编码: 6a757a69636f64652e636f6d
解码结果: b'juzicode.com'
2)Base64编解码
实现二进制数据的Base64编码,常用于Web数据传输。
# juzicode.com/VX公众号:juzicode
import binascii
data = b'\x01\x23\x45\x67\x89\xab\xcd\xef'
b64_str = binascii.b2a_base64(data).decode().strip()
print(f"Base64编码: {b64_str}")
decoded = binascii.a2b_base64('ASNFZ4mrze8=')
print(f"解码数据: {decoded.hex()}")
运行结果:
Base64编码: ASNFZ4mrze8=
解码数据: 0123456789abcdef
3)CRC校验计算
计算数据的循环冗余校验值,用于验证数据完整性。
# juzicode.com/VX公众号:juzicode
import binascii
data = b'VX:juzicode'
crc32 = binascii.crc32(data)
print(f"CRC32校验值: {crc32}")
print('CRC32校验值: %X'%(crc32))
运行结果:
CRC32校验值: 2111946139
CRC32校验值: 7DE1BD9B
4)二进制转ASCII字符串
使用uuencode编码实现二进制数据ASCII化。
# juzicode.com/VX公众号:juzicode
import binascii
binary_data = b'\x01\x02\x03\x04\x05'
ascii_str = binascii.b2a_uu(binary_data).decode()
print(f"UU编码结果:\n{ascii_str}")
运行结果:
UU编码结果:
% 0(#! 4
5)ASCII转二进制数据
解码uuencode格式的ASCII字符串。
# juzicode.com/VX公众号:juzicode
import binascii
uu_str = '% 0(#! 4 '
decoded = binascii.a2b_uu(uu_str)
print(f"解码二进制: {decoded.hex()}")
运行结果:
解码二进制: 0102030405
6)二进制数据可视化
以可打印形式显示二进制内容。
# juzicode.com/VX公众号:juzicode
import binascii
data = bytes(range(0,256))
hexdump = binascii.b2a_hex(data)
print("HEXDUMP:\n" + hexdump.decode('ascii'))
运行结果(片段):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
总结
binascii模块核心功能:
- 支持多种二进制编码方案
- 提供数据完整性校验方法
- 实现二进制与文本格式互转
- 处理传统编码格式兼容问题