-1

我对 python 很陌生,刚刚开始在某个地方工作。一直试图理解一个开发人员在这里编写的一段代码,他离开了,我一直无法弄清楚。

基本上,我熟悉 unpack() 的作用,但在某些地方使用的格式让我感到困惑!

var1, var2, var3, var4 = struct.unpack('!6xBB4xI4xI', data)

是 4 个变量的赋值语句。现在,这就是我对用于解包的格式的了解,我相信是正确的:-

'x':值的分离(@shx2 在下面的答案中指出的填充位)

!6: 以 BIG-ENDIAN 格式从开头读取第 7 个字符(从索引 0 开始)

I:无符号整数

Now, I haven't been able to figure out the formats:-
BB4 - does that mean read 8 bytes (as the B stands for unsigned char, so BB could mean 2 sets of unsigned char)?
I4 - reading 4 bytes and getting the integer value!

我对其他 2 种格式的解释也很可能是不正确的——我只是想从 python 在线文档和调试期间看到的数据中找出答案。请在我可能错的地方纠正我。

4

2 回答 2

2

你很遥远......阅读文档

!是网络顺序(= big-endian)。

x是填充字节。

我相信你可以弄清楚其余的。

于 2013-03-10T17:46:17.477 回答
0

对于 Big Endian 格式的数据,struct.unpack('!6xBB4xI4xI', data)意味着:

6: 6 个填充字节
B: 一个无符号字符
B: 一个无符号字符 4: 填充字节
I: 一个无符号整数
4: 填充字节
I: 一个无符号整数

该结构总共有 24 个字节

于 2013-03-10T19:05:11.867 回答