使用hexdump()函数在Python中生成漂亮的十六进制转储输出
发布时间:2023-12-18 17:35:32
hexdump()函数是Python中的一个库函数,可以生成漂亮的十六进制转储输出。它将给定的数据按照十六进制格式进行转储,并可选地显示ASCII字符。
以下是hexdump()函数的使用示例:
import binascii
def hexdump(data):
hexdump = []
ascii_dump = []
for i in range(0, len(data), 16):
line = data[i:i+16]
# 生成十六进制转储
hex_vals = ['{:02X}'.format(x) for x in line]
hexdump.append(' '.join(hex_vals))
# 生成ASCII字符转储
ascii_vals = [chr(x) if 32 <= x <= 126 else '.' for x in line]
ascii_dump.append(''.join(ascii_vals))
# 打印转储结果
dump = ['{:08X}: {:47s} {}'.format(i*16, hd, ad) for i, (hd, ad) in enumerate(zip(hexdump, ascii_dump))]
print('
'.join(dump))
# 测试数据
data = b"Hello, World!"
# 调用hexdump()函数生成转储输出
hexdump(data)
运行以上代码,将会输出以下结果:
00000000: 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 Hello, World!
这个例子中,我们传递了一个字节数组给hexdump()函数,它将输出该字节数组的十六进制转储结果。转储结果显示了每个字节的十六进制表示,并以16个字节为一行进行分组。另外,转储结果右侧显示了相应的ASCII字符转储。在ASCII转储中,若字节的值在可打印范围内(32到126之间),则显示该字符,否则显示点号(.)。
这个例子只是hexdump()函数的一个基本用法。你可以根据需要对函数进行修改和扩展,以满足具体的转储需求。
