hexdump
是一个在 Python 中用于将二进制数据转换为十六进制表示的实用程序
import binascii
def hexdump(data):
# 将二进制数据转换为十六进制字符串
hex_data = binascii.hexlify(data)
# 计算每两个字符表示的字节数
byte_count = len(hex_data) // 2
# 输出格式化的十六进制数据
for i in range(0, byte_count, 16):
# 获取当前块的数据
block = hex_data[i:i + 16]
# 计算当前块的字符数
char_count = len(block)
# 如果字符数不是16的倍数,则填充空格
if char_count < 16:
block += b' ' * (16 - char_count)
# 将每两个字符转换为一个字节,并输出为十六进制
bytes_output = ' '.join([f'{b:02x}' for b in block])
# 输出当前块的行号、地址、十六进制数据和ASCII字符(如果有)
print(f'{i:04x}: {bytes_output} {block.decode("ascii", errors="ignore")}')
# 示例数据
data = b'Hello, World!'
# 调用 hexdump 函数
hexdump(data)
这个示例将输出以下结果:
0000: 48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21 0a Hello, World!
这个函数首先使用 binascii.hexlify()
将二进制数据转换为十六进制字符串。然后,它将字符串分成每两个字符表示一个字节的部分,并输出格式化的十六进制数据。如果字符数不是16的倍数,则填充空格。最后,它将每两个字符转换为一个字节,并输出为十六进制。