【发布时间】:2013-09-12 23:47:42
【问题描述】:
这类似于在编程 Stack Exchange 上提出的问题:https://softwareengineering.stackexchange.com/questions/158247/binary-representation-in-python-and-keeping-leading-zeros
基本上,我有一些我用十六进制记录的数字:
SOME_NUMBERS = (0xAABBCCDDEEFF, 0xAA55AA55AA55, 0xBEEF0000BEEF)
但是,Python 试图比我聪明并且想得太多,所以当我将值写入文件时,我会在我的十六进制编辑器中得到这个:
00 00 00 00 00 00 00 00 00 00 AA BB CC DD EE FF
在我看来,Python 将我的 48 位数字存储和写入为 64 位或 128 位数字。如何防止将前导零写入文件?相比之下,当使用numpy.random.bytes(6) 时,Python 会将值写入文件而没有前导零,所以我认为它应该能够做到这一点。想法?
【问题讨论】:
-
你
packing 数据和写入文件怎么样? -
请出示您的代码,我们(通常)不能盲目猜测问题。
-
en.wikipedia.org/wiki/Primitive_data_type#Integer_numbers 在 64 位平台上,Python 会将
0xAABBCCDDEEFF作为 64 位整数存储在内存中(就像0x1甚至0x0一样),所以当你写出来你会得到 64 位,除非你自己明确地打包各个字节。
标签: python numpy integer binaryfiles