仅显示十六进制字符串

时间:2014-11-22 02:36:46

标签: python

我正在用Python编写代码来读取RFID信息,但是我怎么只留下十六进制部分?

代码:

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

输出:

[b'\x024500F38EC7FF']

预期产出:

4500F38EC7FF

3 个答案:

答案 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:]

你的意思是这样吗?