gpt4 book ai didi

python - 使用 Chr() 发送十六进制值会添加未知字节

转载 作者:行者123 更新时间:2023-12-01 07:58:09 28 4
gpt4 key购买 nike

我正在尝试通过串行连接发送文件(来自另一个开源项目)。然而,我在发送大文件时遇到了困难。文件长度无法正确转换。

我通过声明使用 int 数组

encoded = []

然后找到文件长度。类似的东西

fileLength = 114872

当我对其进行编码时,我得到了意外的输出。显然,对于这个数字,我们期望“[0x00][0x01][0xC0][0xB8]”

encoded.append(chr((fileLength >> 24) & 0xFF));
encoded.append(chr((fileLength >> 16) & 0xFF));
encoded.append(chr((fileLength >> 8) & 0xFF));
encoded.append(chr((fileLength >> 0) & 0xFF));

但是当我使用

逐字节打印编码时
print("".join(str(v) for v in encoded).encode())

我得到:

\x00\x01\xc3\x80\xc2\xb8

以这种方式通过串行发送十六进制值不会作为正确的字节发送。使用:

encoded.append(hex((fileLength >> 24) & 0xFF));
encoded.append(hex((fileLength >> 16) & 0xFF));
encoded.append(hex((fileLength >> 8) & 0xFF));
encoded.append(hex((fileLength >> 0) & 0xFF));

这给出了预期的结果:

0x00x10xc00xb8

但是通过串口传输时该字符串无法识别。为什么 chr() 函数返回 16 个字节,尽管事实上我什至屏蔽了除前 8 个字节之外的所有字节?

感谢您的帮助!

最佳答案

为什么不使用 int.to_bytes

In [11]: x = (114872).to_bytes(4, byteorder='big')                              

In [12]: x
Out[12]: b'\x00\x01\xc0\xb8'

In [13]: for i in x:
...: print(i)
...:
0
1
192
184

关于python - 使用 Chr() 发送十六进制值会添加未知字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55847763/

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