0

我正在以ser.write('\x01\x03\x01')运行良好的格式将消息发送到 COM 端口。我尝试制作一个功能如下:

def func(inp):
# transport inp to hex format and to be like \xXY (two digits)
# merge in the way '\x01'+'\xXY'+'\x01'

但是我总是在插入反斜杠(它可以像双反斜杠一样插入,但端口不能将其作为单个反斜杠读取)或通过解释器读取这个反斜杠(给出错误)时遇到问题。
如果有人已经这样做了,请帮助我!

4

2 回答 2

0

这正是 Python 的struct 模块的用途。你的函数可以写成:

import struct

>>> def func(inp):
...     return struct.pack('bbb', 1, inp, 1)
...
...
>>> func(22)
'\x01\x16\x01'

格式字符将'b'字节值解释为有符号字符,'B'将它们解释为无符号字符。

于 2013-04-19T16:58:26.520 回答
0

您可以使用binascii.unhexlify转换十六进制字符串

>>> import binascii
>>> binascii.unhexlify('010203') == '\x01\x02\x03'
True

所以你的功能是

def func(inp):
    return '\x01' + binascii.unhexlify(inp) + '\x01';
于 2013-04-19T16:55:37.900 回答