我编写了以下代码,通过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'
如何将此十六进制字符串转换为整数?
答案 0 :(得分:4)
您拥有的值是字节字符串,而不是十六进制。您可以将其编码为十六进制,然后将其解释为基数为16的数字。假设返回值被解释为一个数字,并且对格式没有任何了解,例如little endian vs big endian,并假设\xoo
是\x00
的拼写错误。
from binascii import hexlify
data = serial.readline()
hex = hexlify(data)
num = int(hex, 16)
print(num)
答案 1 :(得分:0)
字符串chuoi中的第二个字节是\xOO
- 它包含字母O
而不是数字0.这会导致您的错误。