-1

我正在尝试转换从此代码中获得的 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是一个十六进制数,但我想将其转换为十进制或字符串。当我尝试这样做时,我收到了一个令牌错误。我该如何解决?

4

2 回答 2

5

您说您想“将……转换为字符串”。

您可以使用它unhexlify来执行此操作,或者decode('hex').

但是,在您的情况下,您首先使用 hex 的唯一原因是您调用了encode('hex'),所以……不要那样做。

如果您想将其解码为 int 或 Decimal 或其他内容,您可以使用适当的构造函数来实现,正如 Maxime 的回答所示。但是,您可能只想直接解码,而不是转换为十六进制来解码为 int。或者,也许您想将十六进制字符串解码为十进制字符串?或者也许这是一些 UUID 风格的结构,你想用struct.unpack它来将它解码成碎片?或者…?如果不确切知道您要做什么,很难给出准确的答案……</p>

于 2013-09-23T20:28:48.833 回答
3

您可以使用 int 将十六进制数转换为整数。

>>> int("0000000000000000000213780510015dff", 16)
149595175772052991
于 2013-09-23T20:27:35.163 回答