我是新的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)
它不起作用,我没有找到任何可以将其转换为小数的地方。有人知道吗?
答案 0 :(得分:0)
您正在i中获得二进制表示。要保持程序的逻辑,你可以使用binascii.b2a_hex将其转换为十六进制数字的字符串,然后使用int(string,16)将其转换为十进制int。
b = binascii.b2a_hex(i)
number = int(b,16)
请注意,这将是一个长期的int,所以要小心处理