Конвертер

Dec 13, 2011 22:40

Сегодня на работе столкнулся с проблемой. Нужно было считать структуру из файла с флешки на вычислителе на котором стоит ОСРВ "Багет". Запись и чтение делал fread-ом в бинарном режиме. Но оказалось что вычислитель читает в формате big-endian, а файл с данными я писал на обычном компе, на котором все файлы оказываются пишутся в формате little-endian (и в Win7 и в ubuntu). Если вкратце, то различаются эти форматы порядком следования байт в слове. В двух этих форматах они зеркально отражены, тоесть младший байт в формате big-endian будет старшим в little-endian. И все вроде бы хорошо - эта перестановка делается элементарно, но.... Для целых чисел все просто, но непонятно как будет вести себя double....
Начал я разбираться с этим вопросом и решил узнать как непосредственно храится double. Наткнулся на удобный сайт, который представляет десятичное число в том виде в котором оно хранится в памяти. Вот он:

http://www.binaryconvert.com/

Ну и еще ряд материалов по теме:

http://ru.wikipedia.org/wiki/Double
http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D1%8F%D0%B4%D0%BE%D0%BA_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2 - Порядок байтов

До конца я с этой проблемой пока не разобрался, но все в переди :)

Работа

Previous post Next post
Up