2024-03-29 13:57:41 发布
网友
在尝试通过pyserial的串行端口与步进电机控制器通信时,我接收到这样的响应'/0\x03\r\n'。你知道吗
'/0\x03\r\n'
我需要能够将'\x03'字节转换成二进制,让我困惑的是'\x03'被认为是字符串的一个字符,所以我不能像这样做:'\x03'[2:]来获得'03'。你知道吗
'\x03'
'\x03'[2:]
'03'
如何将'\x03'转换为可用的内容,例如:00000011或'03'?你知道吗
00000011
尝试使用ord获取每个字符的数值。你知道吗
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字符。你知道吗
\x03
03
/
0
可以使用ord()将其转换为整数:
ord()
>>> ord('\x03') 3
您可以使用^{} function或^{} function将该整数转换为二进制表示形式,format()函数是更灵活、更通用的选项:
format()
>>> bin(3) '0b11' >>> format(3, 'b') '11' >>> format(3, '08b') '00000011'
尝试使用
ord
获取每个字符的数值。你知道吗\x03
是Python告诉您在字符串的那部分有一个字节,它的十六进制值是03
,这不是一个可打印的字符。前两个字符是可打印的(hex 2F和hex 30分别是ASCII字符/
和0
),因此Python使用了它们对应的ASCII字符。你知道吗可以使用
ord()
将其转换为整数:您可以使用^{} function 或^{} function 将该整数转换为二进制表示形式,
format()
函数是更灵活、更通用的选项:相关问题 更多 >
编程相关推荐