在尝试通过串口使用pyserial与步进电机控制器通信时,我收到类似这样的响应'/0\x03\r\n'
。
我需要能够将'\x03'
字节转换为二进制,让我感到困惑的部分是,'\x03'
被认为是字符串的单个字符,所以我不能这样做类似于:'\x03'[2:]
来获取'03'
。
如何将'\x03'
转换为可用的内容,例如:00000011
或'03'
?
答案 0 :(得分:3)
\x03
是Python的方式告诉你在字符串的那个部分有一个一个字节,其十六进制值为03
,这不是一个可打印的字符。前两个字符是可打印的(分别为hex 2F和hex 30,ASCII字符/
和0
),因此Python使用了与之对应的ASCII字符。
您可以使用ord()
将其转换为整数:
>>> ord('\x03')
3
您可以使用bin()
function或format()
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