gpt4 book ai didi

python - Python 中未指定的字节长度

转载 作者:太空狗 更新时间:2023-10-30 02:49:08 25 4
gpt4 key购买 nike

我正在为 P2P 应用程序编写客户端,协议(protocol)规范规定每个数据包的 header 应具有每个字段的特定字节长度,如下所示:

Version: 1 Byte 
Type: 1 Byte
Length: 2 Bytes
And then the data

我有像这样打包和解包 header 字段的方法(我认为):

packed = struct.pack('cch' , '1' , '1' , 26)

这为数据长度为 26 的数据包构造了一个 header ,但在解包数据时,我不确定之后如何获取其余数据。要解包,我们需要知道所有字段的大小,除非我遗漏了什么?我想打包数据我会使用格式指示符“cch26s”,意思是:

1 Byte char
1 Byte char
2 Byte short
26 Byte char array

但是当我不知道数据包中首先包含多少数据时,如何解包数据呢?

最佳答案

按照您描述协议(protocol)的方式,您应该先解压缩前四个字节,然后提取长度(16 位整数)。这会告诉您在第二步中要解压多少字节。

version, type, length = struct.unpack("cch", packed[:4])
content, = struct.unpack("%ds" % length, packed[4:])

这是检查一切的情况。 unpack() 要求打包缓冲区包含的数据与您解包的数据一样多。另外,检查 4 个头字节是否包含在长度计数中。

关于python - Python 中未指定的字节长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9566061/

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