【发布时间】:2022-01-22 15:40:52
【问题描述】:
我面临在 python 中创建字节列表的挑战。我只想将 int 列表转换为预期结果中提到的字节列表。问题陈述是我想将预期的输出发送到连接到 com 端口的串行设备,并且在当前输出的情况下,串行设备不鼓励使用 '\\' 作为分隔符。请建议我处理字节列表中的“\”的正确方法。
cmdlist = [2, 12, 1, 1, 1, 0, 0, 1, 3, 7, 42, 101, 85, 18]
#Convert CMD list to Hex List
for i in range(len(cmdlist)):
cmdlist[i] = hex(cmdlist[i])
f_cmdList = ''
#Convert hex CMD list to string List
for i in range(len(cmdlist)):
f_cmdList += '\\' + (cmdlist[i])
Final_cmdlist = (bytes(f_cmdList,'utf-8'))
print(Final_cmdlist)
电流输出:b'\\0x2\\0xc\\0x1\\0x1\\0x1\\0x0\\0x0\\0x1\\0x3\\0x7\\0x2a\\ 0x65\\0x55\\0x12'
预期输出:b'\0x2\0xc\0x1\0x1\0x1\0x0\0x0\0x1\0x3\0x7\0x2a\0x65\0x55\0x12'
谢谢!
【问题讨论】:
-
你有大于 127 的值吗?或者你为什么这样做?
-
是的。取值范围为 0 到 255。
-
您的意图是使用 UTF-8 进行编码,即将值 128 到 255 编码为每个两个字节?
-
顺便说一句,我非常怀疑你所说的你所期望的就是你所期望的。一堆用零字节分隔的十六进制字符串?你确定吗?
-
这就像如果我运行上面的代码,我会得到输出字节 -
b'\\0x2\\0xc\\0x1\\0x1\\0x1\\0x0\\0x0\\0x1\\0x3\\0x7\\0x2a\\0x65\\0x55\\0x12'但我想创建一个字节列表,我只想要一个反斜杠而不是字节帧中每个十六进制数字后的 2输出 -b'\0x2\0xc\0x1\0x1\0x1\0x0\0x0\0x1\0x3\0x7\0x2a\0x65\0x55\0x12'
标签: python list serial-port byte pyserial