解释通过串口接收的字节数

时间:2015-01-26 16:51:24

标签: python python-2.7

在尝试通过串口使用pyserial与步进电机控制器通信时,我收到类似这样的响应'/0\x03\r\n'

我需要能够将'\x03'字节转换为二进制,让我感到困惑的部分是,'\x03'被认为是字符串的单个字符,所以我不能这样做类似于:'\x03'[2:]来获取'03'

如何将'\x03'转换为可用的内容,例如:00000011'03'

2 个答案:

答案 0 :(得分:3)

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

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

>>> ord('\x03')
3

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

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

答案 1 :(得分:0)

尝试使用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