32位/ 64位系统上的二进制文件?

时间:2011-06-05 18:06:31

标签: python serialization 32bit-64bit

我正在使用python struct模块来创建自定义二进制文件。

文件本身具有以下格式:

4 bytes(整数) 1 byte(unsigned char) 4 bytes(浮动)

4 bytes(整数) 1 byte(unsigned char) 4 bytes(浮动)

..........................( 100000行

4 bytes(整数) 1 byte(unsigned char) 4 bytes(浮动)


目前,我正在使用 32位计算机来创建这些自定义二进制文件。我很快就计划切换到 64位机器

我是否可以使用{32bit / 64bit}两台机器读取/写入相同的文件?或者我应该期待兼容性问题?

(我将使用Ubuntu Linux)

3 个答案:

答案 0 :(得分:2)

只要你的struct format字符串使用“标准大小和对齐”(<>)而不是“native size and alignment”(@),你的文件就可以了使用跨平台。

答案 1 :(得分:1)

请参阅http://docs.python.org/library/struct.html#byte-order-size-and-alignment

  

默认情况下,C类型以机器的本机格式和字节顺序表示,并在必要时通过跳过填充字节进行正确对齐(根据C编译器使用的规则)。

所以它取决于您的代码是否可移植。

答案 2 :(得分:1)

除了32位与64位之外,您还有更多需要担心的问题。您正在讨论的广泛类别称为序列化

查看marshal和/或pickle模块。