对 Python 以 16 进制打印字节数组的方法详解
在 Python 中,我们可以使用 bytes
类型来表示字节数组。如果我们需要以 16 进制的形式来查看字节数组中的内容,我们可以使用下面的方法来实现。
方法一:使用替换字符串的方式
首先,我们需要将字节数组转换为 16 进制的字符串表示形式。可以使用 binascii
模块中的 hexlify()
函数来进行转换。
import binascii
byte_array = b'\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff'
hex_string = binascii.hexlify(byte_array)
接下来,我们可以使用字符串的 replace()
方法将字节之间的空格替换为我们需要的格式。
hex_string_formatted = hex_string.decode('utf-8').replace(' ', ':').upper()
最终得到的 hex_string_formatted
就是我们需要的 16 进制表示形式的字符串。
方法二:使用字符串格式化的方式
与方法一类似,我们先将字节数组转换为 16 进制的字符串表示形式。
byte_array = b'\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff'
hex_string = binascii.hexlify(byte_array)
不同的是,我们可以在字符串格式化中使用 :
来指定格式,从而得到我们需要的 16 进制表示形式的字符串。
hex_string_formatted = ':'.join('{:02X}'.format(byte) for byte in byte_array)
值得注意的是,这里的 {:02X}
表示将一个整数格式化为 2 位的十六进制数,其中大写字母 X 表示使用大写字母表示十六进制数。
接下来,我们来看一下使用这两种方法得到的结果。
示例 1
字节数组:
byte_array = b'\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff'
使用方法一得到的 16 进制表示形式的字符串:
00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF
使用方法二得到的 16 进制表示形式的字符串:
00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF
示例 2
字节数组:
byte_array = b'\x10\x20\x30\x40\x50\x60\x70\x80\x90\xA0\xB0\xC0\xD0\xE0\xF0\x00'
使用方法一得到的 16 进制表示形式的字符串:
10:20:30:40:50:60:70:80:90:A0:B0:C0:D0:E0:F0:00
使用方法二得到的 16 进制表示形式的字符串:
10:20:30:40:50:60:70:80:90:A0:B0:C0:D0:E0:F0:00
以上就是在 Python 中以 16 进制打印字节数组的两种方法。需要注意的是,这里得到的都是字符串形式的 16 进制表示,如果需要进行计算或者其他操作,需要使用 int()
函数将其转换为数字形式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对python以16进制打印字节数组的方法详解 - Python技术站