使用Python将十六进制字符串转换为十进制整数

时间:2015-12-04 11:09:31

标签: python hex decimal

我是新的Python用户,我正在尝试使用Python将十六进制字符串转换为十进制整数。 在我的系统中,我发送类似的值:

import serial 
import binascii 

ser = serial.Serial(port = 'COM3',
    baudrate = 9600,
    bytesize=8,
    parity='N',
    stopbits=1,
    timeout =None) # my parameter to communicate with my card
ser.open() 
a = binascii.a2b_hex('010f0001000000c8d9') # transform hexadecimal under binary format (no problem)
u = ser.write(a) # send binary data (no problem, it works fine)
i = ser.read(u) # read the answer 
i 
# I get that hexadecimal string : '\x02\x01d\x0f\x00\x00\x02\xbf7' 

我尝试了什么:

int(i, 0)

它不起作用,我没有找到任何可以将其转换为小数的地方。有人知道吗?

1 个答案:

答案 0 :(得分:0)

您正在i中获得二进制表示。要保持程序的逻辑,你可以使用binascii.b2a_hex将其转换为十六进制数字的字符串,然后使用int(string,16)将其转换为十进制int。

b = binascii.b2a_hex(i)
number = int(b,16)

请注意,这将是一个长期的int,所以要小心处理