我想将使用 pyusb 通过 USB 接收的整数值数组转换为十六进制值列表。我希望这些十六进制值总是有两个字节,即 0x##。但是,正常的 hex() 函数将返回 0x1,输入为 1。我希望它返回 0x01。
然后在获得十六进制值列表后,我想将它们附加在一起,同时丢弃“0x”部分。这是我目前拥有的,非常简单。
data_read = dev.read(0x82,64,0,1000)
hex_data = range(0,len(data_read))
for i in range(0,len(data_read)):
hex_data[i] = hex(data_read[i])
有任何想法吗?我可以捏造它并以草率的方式来做,但我希望有一种适当的方法来做到这一点。谢谢你。
更新:
data_read = dev.read(0x82,64)
print data_read
>>> array('B', [169, 86, 128, 1, 0, 128])
for i in range(0,len(data_read)):
hex_data[i] = hex(data_read[i])
print hex_data
>>> ['0xa9', '0x56', '0x80', '0x1', '0x0', '0x80']
Lavon 建议的方法不起作用,因为生成的十六进制值在我的代码中是技术上的字符串?相反,我只是跳过了整个 for 循环转换为十六进制,并直接按照 Lavon 和 moooeeeep 的建议进行了操作,并且成功了!谢谢!
hex_data = ('%02x' %i for i in data_read)
print ''.join(hex_data)
>>> a95680010080
有没有很好的语法参考?即你使用的'%02x'?我以前没见过,想更好地理解它。