gpt4 book ai didi

python - 在 python 3 中将字节解码为字符串或 ASCII 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:37:27 25 4
gpt4 key购买 nike

我在使用 python 3 解码接收到的字节时遇到问题。我通过串行连接控制 arduino 并使用以下代码读取它:

import serial
arduino = serial.Serial('/dev/ttyACM0', baudrate=9600, timeout=20)
print(arduino.isOpen())
myData = arduino.readline()
print(myData)

我得到的结果看起来像 b'\xe1\x02\xc1\x032\x82\x83\x10\x83\xb2\x80\xb0\x92\x0b\xa0' >b'\xe1\x02"\xe1\x00\x83\x92\x810\x82\xb2\x82\x91\xb2\n' 并尝试通过 myData.decode 以通常的方式对其进行解码('utf-8') 并且我收到错误 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 1: invalid start byte。我尝试了其他解码( ASCII, cp437, hex, utf-16), 但总是遇到同样的错误。

你有什么建议,我如何解码接收到的字节或 arduino 需要哪些解码?我已经尝试使用 for 循环对其进行逐段解码,但我总是遇到相同的错误消息。

有没有一种通用的方法可以避免解码问题或找出我必须使用哪种解码?

提前致谢。

最佳答案

正如@jsbueno 在评论中所说,这不是解码问题,可能是因为接收到的字节数据实际上是二进制数据。从文件读取二进制数据(字节)时,我遇到了非常相似的问题。

这里有两个选项,第一个是结构模块:

import struct
a = open("somedata.img", "rb")
b = a.read(2)
file_size, = struct.unpack("i",a.read(4))

以这种方式编写代码会生成一个元组,因此要获取整数,只需使用 struct.unpack('i', a.read(4))[0]

如果您想将数据存储在 numpy 数组中,我使用的另一种方法是:

import numpy as np

f = open("somefile.img", "r")
a = np.fromfile(f, dtype=np.uint32)

关于python - 在 python 3 中将字节解码为字符串或 ASCII 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35165790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com