Python的struct.pack究竟做了什么?

时间:2015-11-02 20:01:56

标签: python pack

抱歉这个愚蠢的问题,但

我阅读了文档,仍然可以理解这个函数在做什么:

struct.pack('<L',0x01D1F23A)

有人能够以非常幼稚和详细的方式解释这个函数对给定输入和其他输入的作用。

当我打印输出时,得到了&#34;:≥╤☺&#34;,十六进制值的ASCII表示,所以基本上struct.pack如何挂起十六进制值旁边它将它变成小端。 它是如何存储在内存中的? 我不明白它是什么&#34;包装&#34;。

感谢。

2 个答案:

答案 0 :(得分:2)

返回值是字节字符串(在Python 3中),或Python 2中的标准(非unicode)字符串,显示0x01D1F23A表示为小端字节顺序的无符号长整数。

它是“打包”的,因为它被存储为原始二进制内容 - 与原生无符号长类型完全相同的内容存储在小端平台的内存中。

The byte order is specified by the <the unsigned-long type is specified by the L

如果您尝试以本机二进制格式编写文件,网络数据包或其他内容,这将非常有用。

答案 1 :(得分:1)

它需要几个数据(在你的情况下,一个,L - 一个4字节的整数)并将它们放入一个bytestring

>>> struct.pack('<L', 0x01D1F23A) == b'\x3A\xF2\xD1\x01'
True

你的困惑可能来自几个来源