python struct,网络应用中的字节序与对齐,以及unsigned int与unsigned long的区别

1 投票
1 回答
2063 浏览
提问于 2025-04-16 22:15

我有两个关于 struct 的问题,内容来自Python文档:

字节顺序、大小和对齐:在网络通信中,我应该用 ! 代替 = 吗?
比如说: struct.pack("!BBH", 1, 12, 512)struct.pack("=BBH", 1, 12, 512) 哪个更合适?

格式字符:无符号整数(I)和无符号长整型(L)有什么区别?因为它们都是4个字节的大小。

谢谢你的时间,如果这个问题很傻,请多多包涵 :-)

1 个回答

2

如果你希望你的代码在任何地方运行都能产生相同的结果,那你为什么还要用 = 呢?所以,当然,你应该使用一个大家都能理解的代码。标准的写法是 !,所以就用 ! 吧。

看看格式代码表上面的标题:

‘标准大小’这一列指的是在使用标准大小时,打包值的字节数;也就是说,当格式字符串以 '<'、'>'、'!' 或 '=' 开头时的情况。而使用本地大小时,打包值的大小会依赖于你的平台。

所以,如果你使用 @ 格式代码或者不写格式代码,那么 IL 的大小在理论上可能会因为你的平台不同而有所不同。

撰写回答