网络应用的python结构,字节顺序和对齐以及unsigned int和unsigned long之间的区别



我有两个关于python文档中struct的问题:

字节顺序,大小和对齐:对于网络通信,我应该使用!而不是=吗?
例:struct.pack("!BBH", 1, 12, 512) or struct.pack("=BBH", 1, 12, 512) ?

格式字符:unsigned int (I)和unsigned long (L)之间的区别是什么,因为它们都是4字节?

谢谢你的时间,如果这是一个愚蠢的问题,请原谅我:-)

如果您希望您的代码无论在哪里运行都产生相同的输出,为什么要使用=呢?当然,是的,你应该使用一个对每个人都有相同含义的代码。标准是!,所以使用!

读取格式代码表上方的标题:

' Standard size '列指的是使用标准大小时被打包值的字节大小;也就是说,当格式字符串以'<', '>', '!'或'='。当使用本机大小时,打包值的大小取决于平台。

因此,如果您使用@格式代码或省略格式代码,I的大小和L的大小理论上可能不同,这取决于您的平台。

最新更新