пятница, 30 апреля 2010 г.

Бинарные файлы в Unix и Windows

[#####!!!! я убил несколько дней своей жизни на эту ерунду, конвертируя файлики, сгенерированные по Аиксом, для чтения по Виндой. И все из-за недостатка знаний по Си. #####!!!!]

1. Если есть желание читать бинарный file1 и писать в бинарный file2 (c помощью fwread и fwrite), открывайте файлы в режиме binary ("rb", "wb"; иногда пишут "r+b", "w+b"). Тогда не будет проблем с выравниванием.

2. На компьютере IBM четырехбайтное integer-число 150 (HEX 96) запишется в файл как 0x00 00 00 96. Этот порядок байт называется big-endian. На Intel x86 байты будут в обратном порядке: 0x96 00 00 00. Числа double в Windows тоже переворачиваются. Т.е. имеет место little-endian порядок байт.

4. Еще я теперь знаю, что такое сериализация:) "Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации — восстановление начального состояния структуры данных из битовой последовательности." (Википедия)

Комментариев нет: