我正在用Python编写代码来读取RFID信息,但是我怎么只留下十六进制部分?
代码:
import serial as s
ser = s.Serial('COM8', 9600, timeout=10000)
rfid = ser.read(13).splitlines()
print(rfid)
输出:
[b'\x024500F38EC7FF']
预期产出:
4500F38EC7FF
答案 0 :(得分:1)
因为splitlines()
会为您返回一个数组,这就是您在print
尝试简单地print rfid[0]
,这可能会做你想要的。
>>> x = b'\x024500F38EC7FF'
>>> print(x)
4500F38EC7FF
答案 1 :(得分:1)
如果您只想要ASCII字符,可以拆分字符串以删除前导0x02字符
>>> 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'
答案 2 :(得分:0)
line = [b'\x024500F38EC7FF']
line[0][1:]
你的意思是这样吗?