我的数据结构定义如下:
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.....
非常感谢您的帮助
答案 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
>>>