我正在尝试转换此代码中获得的RFID标签号;
import serial
ser = serial.Serial()
ser.port = "COM1"
ser.baudrate = 9600
ser.timeout = 3
ser.open()
if ser.open is True:
print "Port Not open"
while ser.isOpen():
#ser.timeout = 7
response = ser.read(17)
response = response.encode('hex')
print response
我得到的这个0000000000000000000213780510015dff
是一个十六进制数字,但我想把它转换为十进制或字符串。当我尝试这样做时,我收到了令牌错误。我该如何解决这个问题?
答案 0 :(得分:5)
你说你想“转换成字符串”。
您可以使用unhexlify
来执行此操作,或decode('hex')
。
但是,在您的情况下,您首先使用十六进制的唯一原因是您调用了encode('hex')
,所以只是......不要这样做。
如果你想将它解码为int或Decimal或其他东西,你可以通过使用适当的构造函数来实现,正如Maxime的答案所示。但是,您可能只想直接解码它,而不是转换为十六进制只是为了解码为int。或者您想将十六进制字符串解码为十进制字符串?或者这可能是一些UUID风格的结构,您想使用struct.unpack
将其解码成碎片吗?要么…?如果不知道你想要做什么,很难给出确切的答案......
答案 1 :(得分:3)
您可以使用int将十六进制数转换为整数。
>>> int("0000000000000000000213780510015dff", 16)
149595175772052991