Бинарные файлы в 32-битных / 64-битных системах? - PullRequest
3 голосов
/ 05 июня 2011

Я использую python модуль struct для создания пользовательских двоичных файлов.

Сам файл имеет следующий формат:

4 bytes (целое число) 1 byte (без знака) 4 bytes (плавать)

4 bytes (целое число) 1 byte (без знака) 4 bytes (плавать)

.......................... ( 100000 таких строк )

4 bytes (целое число) 1 byte (без знака) 4 bytes (плавать)


В настоящее время я использую 32-битную машину для создания этих пользовательских двоичных файлов. Я скоро планирую перейти на 64-битную машину .

Смогу ли я читать / записывать одни и те же файлы на обеих машинах {32bit / 64bit}? или мне следует ожидать проблем с совместимостью?

(я буду использовать Ubuntu Linux для обоих)

Ответы [ 3 ]

2 голосов
/ 05 июня 2011

Пока ваша строка формата формата использует "стандартный размер и выравнивание" (< или >), а не "собственный размер и выравнивание" (@), ваши файлы могут использоваться кроссплатформенными.

1 голос
/ 05 июня 2011

Вам нужно больше беспокоиться, чем 32-разрядный или 64-разрядный.Широкая категория, о которой вы говорите, называется сериализация .

Посмотрите на маршал и / или рассол модулей.

1 голос
/ 05 июня 2011

См. http://docs.python.org/library/struct.html#byte-order-size-and-alignment

По умолчанию типы C представлены в собственном формате и порядке байтов компьютера и при необходимости выровнены путем пропуска байтов панели (согласно правилам, используемым компилятором C).

Так что от вашего кода зависит, переносимый он или нет.

...