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

3

我正在使用 Python 的结构模块创建自定义二进制文件。

该文件的格式如下:

4个字节(整数) 1个字节(无符号字符) 4个字节(浮点数)

4个字节(整数) 1个字节(无符号字符) 4个字节(浮点数)

..........................(共有100000行

4个字节(整数) 1个字节(无符号字符) 4个字节(浮点数)


目前,我正在使用一台 32位机器 创建这些自定义二进制文件。 我很快将要切换到一台 64位机器

我是否能够在两台 {32位 / 64位} 机器上读写相同的文件?或者是否应该期望兼容性问题?

(我将在Ubuntu Linux上使用两台机器)

3个回答

2
只要您的结构格式字符串使用“标准大小和对齐方式”(<>)而不是“本机大小和对齐方式”(@),您的文件就可以跨平台使用。

1

1

你需要关注的不仅仅是32位和64位的问题。你所说的广泛类别被称为序列化

可以查看marshal和/或pickle模块。


谢谢。我正在创建自己的格式。如果我可以在32/64位系统上读写两个文件,为什么还要担心“marshal”或“pickle”呢? - user3262424
如果你只关心x86与x86_64,那么当然可以自己编写解决方案。但是,如果你使用标准的封送机制——它不仅关注字节顺序和浮点表示,还关注字长——你可以确信你的代码将来可以移植到任何系统。而且你需要编写的代码量大致相同,甚至可能更少。所以问题是,为什么不规范你的外部格式并使用适当的封送呢? - Nemo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接