gpt4 book ai didi

python - 将 'bytes' 对象转换为字符串

转载 作者:行者123 更新时间:2023-11-28 17:14:15 25 4
gpt4 key购买 nike

我试图找到解决方案,但仍然坚持下去。我想用 PyVisa 来控制函数发生器。我有一个 waveform,它是 016382 之间的值列表然后我必须以每个 waveform 点占用 2 个字节的方式来准备它。值以 big-endian、MSB 优先格式表示,并且是直接二进制。所以我做 binwaveform = pack('>'+'h'*len(waveform), *waveform)然后,当我尝试使用 AFG.write('trace ememory, '+ header + binwaveform) 将其写入仪器时,出现错误:

  File ".\afg3000.py", line 97, in <module>
AFG.write('trace ememory, '+ header + binwaveform)
TypeError: Can't convert 'bytes' object to str implicitly

我尝试用 AFG.write('trace ememory, '+ header + binwaveform.decode()) 解决它,但看起来默认情况下它尝试使用不正确的 ASCII 字符对于某些值:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 52787: invalid start byte

你能帮忙吗?

最佳答案

binwaveform 是一个整数的压缩字节数组。例如:

struct.pack('<h', 4545)
b'\xc1\x11'

您不能打印它,因为它对您的终端没有意义。在上面的例子中,0xC1 是无效的 ASCII 和 UTF-8。

当您将字节字符串附加到常规 str (trace ememory, '+ header + binwaveform) 时,Python 希望将其转换为可读文本,但不知道如何操作。

解码它意味着它是文本 - 它不是。

最好的办法是打印它的十六进制表示:

import codecs
binwaveform_hex = codecs.encode(binwaveform, 'hex')
binwaveform_hex_str = str(binwaveform_hex)
AFG.write('trace ememory, '+ header + binwaveform_hex_str)

关于python - 将 'bytes' 对象转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45298218/

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