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

3 投票
3 回答
1470 浏览
提问于 2025-04-16 18:59

我正在使用 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编译器使用的规则)。

所以,代码是否可移植就要看你的写法了。

1

你需要关注的事情比32位和64位要多得多。你提到的这个大类叫做序列化

可以看看 marshal 和/或 pickle 这两个模块。

2

只要你的结构体格式字符串使用的是“标准大小和对齐方式”(用<>表示),而不是“本地大小和对齐方式”(用@表示),那么你的文件就可以在不同的平台上使用。

撰写回答