Python轮子:binascii-二进制数据处理模块

原文链接: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模块核心功能:

  • 支持多种二进制编码方案
  • 提供数据完整性校验方法
  • 实现二进制与文本格式互转
  • 处理传统编码格式兼容问题

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注