Render.ru

Проблема со чтением числа с плавающей точко

Фигли

Пользователь сайта
Рейтинг
2
#1
Пример из хелпа:
f=fopen "c:\\test.bin" "wb"
WriteFloat f 0.9905395508 -- Пишется в файл 00947D3F
fclose f
f=fopen "c:\\test.bin" "rb"
ReadFloat f -- Читается из файла 0.99054
fclose f
Тут проблем нет, как число записалось в бинарный файл, так и прочиталось. Проблема в том, что у меня есть бинарные файлы, но сами числа записаны наоборот, число из примера в самом файле записано так - 3F7D9400
В калькуляторе Хекс редактора есть выбор как переводить число Intel или Motorolla. Если переводить как Motorolla, число переводится 0.9905395508, если выбрать Intel то получается 1.363658326e-038, а Мах переводит именно как Intel. Чтоб правильно читалось, мне пришлось создавать временный файл, писать в него каждое 16-тиричное число побайтно наоборот (1234->4321), чтоб из него правильно прочитать командой ReadFloat.
Работать то оно работает, читает, переводит, но это как-то не спортивно, хочу избавиться от временного файла.
Так же пробовал через массив.
tmp1 = (bit.intAsHex (ReadLong fs)) as string -- читаю из файла число перевожу в Хекс и сохраняю как строку
tmp2 = tmp1[7]+tmp1[8]+tmp1[5]+tmp1[6]+tmp1[3]+tmp1[4]+tmp1[1]+tmp1[2] -- "выворачиваю" число
Но тут проблема, нет команды для перевода Хекс числа в число с плавающей точкой, есть такие:
bit.HexAsInt
bit.IntAsHex
А Hex как Float не существует. И снова я возвращаюсь к временному файлу...
Есть ли в Мах, команда, как в Хекс калькуляторе, переключить перевод чисел с Intel на Motorolla, чтоб без временного файла правильно читать? Или какой-то другой выход.

Обновление сообщения автором
04.01.2013 в 18:51
В догонку, вот часть бинарного файла.
3F7D981ABDB2DD5BBDCF3CAB3CED79FE
Тут 4 числа с плавающей точкой, если его читать ReadFloat получается не то, а надо чтоб на выходе было:
0.990602
-0.0873363
-0.10119
0.0289888
И это я получаю, только через временный файл.
 

Фигли

Пользователь сайта
Рейтинг
2
#3
Вобщето это не просто подходит, это решение. :))
Я несколько в шоке, что сам не нашёл. Числа всё же надо переписывать в обратном порядке, но это через массив, главное без временного файла.
Спасибо. (тыкнул в кнопку)
Но для общего развития, вопрос всё же в силе:
Есть ли в Мах, команда, как в Хекс калькуляторе, переключить перевод чисел с Intel на Motorolla
 
Сверху