32位与64位系统上的二进制文件?
我正在使用 python
的 struct 模块来创建自定义的二进制文件。
这个文件的格式如下:
4个字节
(整数)
1个字节
(无符号字符)
4个字节
(浮点数)
4个字节
(整数)
1个字节
(无符号字符)
4个字节
(浮点数)
.......................... (总共100000行这样的内容)
4个字节
(整数)
1个字节
(无符号字符)
4个字节
(浮点数)
目前,我正在使用一台 32位的机器 来创建这些自定义的二进制文件。我计划很快换成一台 64位的机器。
我能否在 {32位 / 64位}
的机器上读写相同的文件?还是说我应该担心兼容性问题?
(我会在两台机器上使用 Ubuntu Linux)
3 个回答
1
请查看 http://docs.python.org/library/struct.html#byte-order-size-and-alignment
默认情况下,C语言的数据类型会以计算机本身的格式和字节顺序来表示,并且如果需要的话,会通过跳过一些填充字节来确保对齐(这遵循C编译器使用的规则)。
所以,代码是否可移植就要看你的写法了。
2
只要你的结构体格式字符串使用的是“标准大小和对齐方式”(用<
或>
表示),而不是“本地大小和对齐方式”(用@
表示),那么你的文件就可以在不同的平台上使用。