如何在python中打印c_type字节数组作为十六进制值的集合?

时间:2015-05-04 12:38:29

标签: python hex

我的数据结构定义如下:

class Factory_Params_Get_Command(Structure):
_pack_ = 1
_fields_ = [("SN",c_byte * 32),
            ("Voltage",c_byte),
            ("Reserved",c_byte * 30)]
# Print the fields
def __str__(self):
    return "Serial Number: %s"  % (list(self.SN))

这将打印序列号,如:

[0, 32, 58, 73.....]

我想将序列号打印为十六进制值集,其中每个字节由2个十六进制数表示,如果可能,不带逗号且不带空格。像这样:

03C8A0D6.....

非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

可能是这样的:

hexstring = ''.join('%02X' % b for b in self.SN)

将格式化字符串%02X应用于数组中的每个字节,然后将所有内容连接成一个字符串。例如:

>>> import ctypes
>>> sn = (ctypes.c_byte*32)(*range(1,32))
>>> hexstring = ''.join('%02X' % b for b in sn)
>>> print hexstring
0102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F00
>>>