解释通过串行p接收的字节

2024-03-29 13:57:41 发布

您现在位置:Python中文网/ 问答频道 /正文

在尝试通过pyserial的串行端口与步进电机控制器通信时,我接收到这样的响应'/0\x03\r\n'。你知道吗

我需要能够将'\x03'字节转换成二进制,让我困惑的是'\x03'被认为是字符串的一个字符,所以我不能像这样做:'\x03'[2:]来获得'03'。你知道吗

如何将'\x03'转换为可用的内容,例如:00000011'03'?你知道吗


Tags: 端口字符串内容字节二进制控制器字符电机
2条回答

尝试使用ord获取每个字符的数值。你知道吗

>>> s = '/0\x03\r\n'
>>> [ord(c) for c in s]
[47, 48, 3, 13, 10]
>>> [ord(c) for c in s][2]
3

\x03是Python告诉您在字符串的那部分有一个字节,它的十六进制值是03,这不是一个可打印的字符。前两个字符是可打印的(hex 2F和hex 30分别是ASCII字符/0),因此Python使用了它们对应的ASCII字符。你知道吗

可以使用ord()将其转换为整数:

>>> ord('\x03')
3

您可以使用^{} function^{} function将该整数转换为二进制表示形式,format()函数是更灵活、更通用的选项:

>>> bin(3)
'0b11'
>>> format(3, 'b')
'11'
>>> format(3, '08b')
'00000011'

相关问题 更多 >