如何在Python中将长整数写为二进制?


问题内容

在Python中,长整数具有无限的精度。我想将16字节(128位)整数写入文件。struct从标准库开始,最多仅支持8个字节的整数。array具有相同的限制。有没有一种方法可以做到而无需掩盖和移动每个整数?

这里有一些澄清:我正在写一个要从非Python程序读取的文件,所以泡菜不见了。全部使用128位。


问题答案:

两种可能的解决方案:

  1. 只需腌制您的长整数。这将以一种特殊的格式写入整数,如果需要的话,可以再次读取该整数。

  2. 使用此答案中的第二个代码段将long int转换为大字节序字符串(如果愿意,可以很容易地将其更改为little endian),然后将此字符串写入文件。

问题是bigints的内部表示不直接包含您要求的二进制数据。