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

时间:2011-07-25 22:27:01

标签: python struct endianness

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

Byte Order, Size, and Alignment:对于网络通信,我应该使用!代替=吗? 例如:struct.pack("!BBH", 1, 12, 512)struct.pack("=BBH", 1, 12, 512)

Format characters:unsigned int(I)和unsigned long(L)有什么区别,因为两者都是4个字节?

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

1 个答案:

答案 0 :(得分:2)

如果您希望代码在运行的任何位置生成相同的输出,为什么使用=?当然,是的,您应该使用对每个人来说意味着相同的代码。标准为!,因此请使用!

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

  

“标准大小”列是指使用标准大小时打包值的大小(以字节为单位);也就是说,当格式字符串以'<','>','!'之一开头时或'='。使用本机大小时,打包值的大小取决于平台。

因此,如果您使用@格式代码或省略格式代码,I的大小和L的大小理论上可能会有所不同,具体取决于您的平台。< / p>