【发布时间】:2014-03-18 12:12:03
【问题描述】:
这个 python 东西的新手。 不久前,我保存了连接到串行端口的外部设备的输出,因为我无法保留该设备。我将串行端口的数据作为字节读取,目的是为该设备创建一个模拟器。 数据每行保存一个“字节”到文件中,如下面的示例提取。
b'\x9a'
b'X'
b'}'
b'}'
b'x'
b'\x8c'
我想从数据捕获中读取每一行,并将本来是原始字节的内容附加到字节数组中。 我在字节数组上尝试了各种 append() 和连接操作 (+=),但上面的行是 python 字符串对象,这些操作失败了。
有没有简单的方法(内置方法?)将这些行的每个原始字节值添加到字节数组中?
谢谢。
M
更新 我遇到了 .encode() 字符串方法,并创建了一个粗略的函数来满足我的需求。
def string2byte(str):
# the 'byte' string will consist of 5, 6 or 8 characters including the newline
# as in b',' or b'\r' or b'\x0A'
if len(str) == 5:
return str[2].encode('Latin-1')
elif len(str) == 6:
return str[3].encode('Latin-1')
else:
return str[4:6].encode('Latin-1')
...嗯,它很实用。
如果有人知道更优雅的解决方案,也许你会很乐意发布这个。
【问题讨论】:
-
您的代码似乎不正确,例如,对于
"b'\\r'\n",您的代码生成b'r'而不是b'\r'。 -
谢谢你,JF。错过了。
标签: python-3.x casting bytearray