在Python中将十六进制转换为十进制

时间:2013-09-23 20:22:48

标签: python rfid

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

2 个答案:

答案 0 :(得分:5)

你说你想“转换成字符串”。

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

但是,在您的情况下,您首先使用十六进制的唯一原因是您调用了encode('hex'),所以只是......不要这样做。

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

答案 1 :(得分:3)

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

>>> int("0000000000000000000213780510015dff", 16)
149595175772052991