python:从serial.read()解析字符串

python:从serial.read()解析字符串,python,ascii,hex,pyserial,Python,Ascii,Hex,Pyserial,我正在PC上的python脚本和嵌入式c之间进行通信。我有以下问题: 我从mcu(嵌入式c)发送整数和浮点的二进制表示。使用Br@y的终端,我已经验证了数字的二进制表示形式是从mcu发送的。在python脚本中,我使用pySerial的serial.read获取字节,并将它们放入列表中 如果我从mcu发送以下数字:0x10000000(16进制10,小写),它在python脚本中显示为“\x10\x00\x00\x00”,这并不可怕,因为我可以从一致的索引中提取字符。但是,当两个十六进制数字表示

我正在PC上的python脚本和嵌入式c之间进行通信。我有以下问题:

我从mcu(嵌入式c)发送整数和浮点的二进制表示。使用Br@y的终端,我已经验证了数字的二进制表示形式是从mcu发送的。在python脚本中,我使用pySerial的serial.read获取字节,并将它们放入列表中

如果我从mcu发送以下数字:0x10000000(16进制10,小写),它在python脚本中显示为“\x10\x00\x00\x00”,这并不可怕,因为我可以从一致的索引中提取字符。但是,当两个十六进制数字表示ascii字符时,字符串将使用ascii字符而不是\xDD

有没有办法强制字符串只使用\xDD表示形式,而不使用ascii值?或者我只需在字符串上迭代,删除“\x”并在执行时转换ascii值


谢谢您确定
\x
在字符串中吗?这看起来像Python的二进制数据表示字符串(repr),但字符
\x
实际上不在字符串中

struct模块可以解压二进制数据

s = '\x10\x00\x00\x00'
i = struct.unpack("I", s)[0]

i
现在是16(int)。

您确定
\x
在字符串中吗?这看起来像Python的二进制数据表示字符串(repr),但字符
\x
实际上不在字符串中

struct模块可以解压二进制数据

s = '\x10\x00\x00\x00'
i = struct.unpack("I", s)[0]

i
现在是16(int)。

Python总是以相同的方式打印字符串

尝试binascii模块中的“hexlify”功能:

>>> binascii.hexlify('\x10\x00\x00\x00')
'10000000'

Python总是以相同的方式打印字符串

尝试binascii模块中的“hexlify”功能:

>>> binascii.hexlify('\x10\x00\x00\x00')
'10000000'