Python 如何将十六进制字符串转换为整数?

Python 如何将十六进制字符串转换为整数?,python,raspberry-pi,Python,Raspberry Pi,我编写了以下代码,通过Raspberry PI上的串行端口发送和接收数据 import serial serial=serial.Serial("dev/ttyAMA0", baudrate=9600, stopbits=serial.STOPBITS_ONE, parity=serial.PARITY_NONE, bytesize=serial.EIGHTBITS,

我编写了以下代码,通过Raspberry PI上的串行端口发送和接收数据

import serial
serial=serial.Serial("dev/ttyAMA0",
                baudrate=9600,
                stopbits=serial.STOPBITS_ONE,
                parity=serial.PARITY_NONE,
                bytesize=serial.EIGHTBITS,
                timeout=0.5)

 chuoi="\xAA\xOO\x03\x25\x26\x00\x00\xBB"
 while 1: 
    serial.write(chuoi)
    data=serial.readline()
    print int(data,16)
我得到以下错误:

ValueError: invalid literal for int() with base 16: '\xaa\x00\x02\x01\x83\x80\xbb'

如何将这个十六进制字符串转换为整数?

字符串chuoi中的第二个字节是
\xOO
-它由字母
O
而不是数字0组成。这是导致错误的原因。

您的值是字节字符串,而不是十六进制。您可以将其编码为十六进制,然后将其解释为基数为16的数字。假设返回值被解释为一个数字,并且对格式一无所知,例如little-endian和big-endian,并且假设
\xoo
\x00
的一个打字错误

from binascii import hexlify

data = serial.readline()
hex = hexlify(data)
num = int(hex, 16)

print(num)