欢迎访问宙启技术站
智能推送

使用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()函数的一个基本用法。你可以根据需要对函数进行修改和扩展,以满足具体的转储需求。