2014-11-22 155 views
0

我正在Python上編寫代碼以從RFID中讀取信息,但我該如何只留下十六進制部分?僅顯示十六進制字符串

代碼:

import serial as s 
ser = s.Serial('COM8', 9600, timeout=10000) 
rfid = ser.read(13).splitlines() 
print(rfid) 

輸出:

[b'\x024500F38EC7FF'] 

預期輸出:

4500F38EC7FF 

回答

1

如果你只想ASCII字符如果你想每一個字符爲整數的值,您可以分割字符串刪除前導0×02字符

>>> x = b'\x024500F38EC7FF' 
>>> x[1:] # skip the first character 
'4500F38EC7FF' 

>>> [ord(c) for c in x] 
[2, 52, 53, 48, 48, 70, 51, 56, 69, 67, 55, 70, 70] 

或者如果你想要每個字符的十六進制表示,你可以使用類似於

>>> ' '.join('%02x' % ord(c) for c in x) 
'02 34 35 30 30 46 33 38 45 43 37 46 46' 
0
line = [b'\x024500F38EC7FF'] 
line[0][1:] 

你的意思是這樣?

1

因爲splitlines()回報你一個數組,這就是你看到print

儘量簡單print rfid[0],可能做你想做的。

>>> x = b'\x024500F38EC7FF' 
>>> print(x) 
4500F38EC7FF 
相關問題