在python中使用解包读取不同格式的数据

在python中使用解包读取不同格式的数据,python,Python,我对python非常陌生,刚刚开始在某个地方工作。我一直在试图理解一段代码,这段代码是由一位离开的开发人员编写的,但我一直无法理解 基本上,我熟悉unpack()的功能,但在某些地方使用的格式让我感到困惑 var1、var2、var3、var4=struct.unpack(“!6xBB4xI4xI',data) 是4个变量的赋值语句。这就是我对解包所用格式的理解,我相信这是正确的:- “x”:值的分隔(填充位如下面答案中@shx2所指出) !!6:以BIG-ENDIAN格式从开始读取第7个字符(

我对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!

我对其他两种格式的解释可能也不正确——我只是想从python在线文档和调试期间看到的数据中找出答案。无论我哪里做错了,请纠正我。

你太离谱了。。。读这本书

是网络顺序(=大端)

x
是填充字节


我相信您可以计算出其余部分。

对于大端格式的数据,
struct.unpack(“!6xBB4xI4xI',data)
表示:

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


该结构总共有24个字节

感谢您的帮助。。实际上,我对填充位的意思是相同的,只是没有引用相同的单词:)你能帮我解释一下BB4和I4是什么意思吗(B是无符号字符,我是无符号整数)?我用完整的赋值语句更新了我的问题——正如你所看到的,4个变量被赋值;这是由填充字节“x”指定的吗?