我想通過使用pyusb通過USB接收的整數值數組轉換爲十六進制值列表。我希望這些十六進制值總是有兩個字節,即0x ##。然而,正常的十六進制()函數將返回0x1,輸入爲1.我希望它返回0x01。將整數轉換爲十六進制,結果總是有2個字節
然後,在得到十六進制值列表後,我想將它們追加在一起,同時丟掉'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建議的方法,因爲所產生的十六進制值在技術上在我的代碼串沒有工作?相反,我只是跳過我整個循環轉換爲十六進制,並直接做了拉文和moooeeeep建議,它的工作!謝謝!
hex_data = ('%02x' %i for i in data_read)
print ''.join(hex_data)
>>> a95680010080
是否有一個很好的語法參考?即您使用的'%02x'?我之前沒有看到過,希望更好地理解它。
那些不是字節。這些是[nibbles](http://en.wikipedia.org/wiki/Nibble)。 – senderle
在'dev.read(0x82,64,0,1000)'中,所有值是十六進制還是隻有具有前導'0x'的值? – 2012-05-04 22:03:38
@senderle是啊腦放屁那裏,晚了一天 – raymond