我正在用Python编写代码来读取RFID的信息,但是我是如何只留下十六进制部分的呢?
代码:
import serial as s
ser = s.Serial('COM8', 9600, timeout=10000)
rfid = ser.read(13).splitlines()
print(rfid)输出:
[b'\x024500F38EC7FF']预期产出:
4500F38EC7FF发布于 2014-11-22 03:27:12
如果只想使用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'发布于 2014-11-22 02:48:38
因为splitlines()返回一个数组,这就是您在print上看到的
尝试简单的print rfid[0],这可能会做你想做的事。
>>> x = b'\x024500F38EC7FF'
>>> print(x)
4500F38EC7FF发布于 2014-11-22 02:47:44
line = [b'\x024500F38EC7FF']
line[0][1:]你是说这边吗?
https://stackoverflow.com/questions/27073443
复制相似问题