【发布时间】:2018-11-21 09:19:51
【问题描述】:
我必须通过 USB 端口读取 UART 设备并将传入的字节存储在 .txt 文件中。
我使用以下命令:
while 1:
x=ser.read()
f.write(str(x)) #f is the file object
但是,这会将一些 bytes 转换为它们对应的 ascii 字符并按原样存储一些
示例:
b'\x55'存储为b'U'。但是,
b'\xaa'存储为字符串本身(即b'\xaa')。
如果我使用chr(int.from_bytes()),则会出现以下错误:
UnicodeEncodeError: 'cp932' codec can't encode character '\xaa' in position 0: illegal multibyte sequence
有没有一种方法可以将所有传入的字节存储为字节而不将一些转换为ascii 字符(例如:b'\x55' 存储为字符串b'\x55' 而不是b'U'),因为这会导致问题我进一步处理数据。
我在 64 位 windows 10 上使用 python-3.7
【问题讨论】:
-
.txt文件长什么样??? -
如果您的数据不是文本,您可以将其按原样存储在二进制文件中,或者您必须将其编码为某种文本表示形式。使用
str就像你做后者一样,也许你想做前者? -
我会说你应该在收到数据时以二进制格式存储数据,然后使用十六进制查看器/编辑器打开它。
标签: python python-3.x byte