Python 的 struct.pack 到底是做什么的?

What exactly does Python's struct.pack do?

抱歉这个愚蠢的问题,但是,

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

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

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

当我打印输出时,我得到了“:≥╤☺”,一个十六进制值的 ASCII 表示,所以基本上 struct.pack 是如何将十六进制值挂在它旁边的,它把它变成小端。 它如何存储在内存中? 我不明白这是什么 "pack's".

谢谢。

这个的 return 值是字节串(在 Python 3 中),或者在 Python 2 中是标准(非 unicode)字符串,显示 0x01D1F23A 表示为无符号long 小端字节顺序。

它是 "packed" 因为它存储为原始二进制内容 -- 与您在小端平台上本地存储在内存中的本机无符号长整型内容完全相同。

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

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

它需要几条数据(在你的例子中,一条,L——一个 4 字节的整数)并将它们放入一个 bytestring

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

您的困惑可能来自多个方面