Вверх ↑
Этот топик читают: Гость
Ответов: 8959
Рейтинг: 824
#1: 2008-08-31 13:34:26 ЛС | профиль | цитата
Проблема: есть файл, в котором без разделителей записаны 4-х байтные числа формата Single. Мне надо их прочитать, конечно в HiAsm-е, но HiAsm их не понимает, это же не Real! Но если знать назначение всех 32 битов в этом представлении числа, то элементарно перевести в любую форму можно.
Читаю справку:
"Переменные типа Single (числа с плавающей точкой обычной точности) сохраняются как 32-разрядные (4-байтовые) числа с плавающей точкой стандарта IEEE в диапазоне от -3,402823E38 до -1,401298E-45 для отрицательных значений и от 1,401298E-45 до 3,402823E38 для положительных значений."
Ой, да запросто - в VB создаю файл и заношу туда пару переменных в формате Single. Читаю по байтам (я заплакал):
53 46 55 54 55 48 51 49 69 43 48 56 (прочитанные байты)
5 . 7 6 7 0 3 1 E + 0 8 (их значение = 5,767031Е+08)

46 48 48 49 54 (прочитанные байты)
. 0 0 1 6 (их значение = 0,0016)
И где здесь обещанные 4 байта?
Вот число Single:
135 78 242 183
или:
10000111010011101111001010110111
Кто сможет рассказать, какой бит что означает?
карма: 19

0
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2008-08-31 13:59:07 ЛС | профиль | цитата
Леонид, проще добавить в datatofile

#pas
function THIDataToFile.dtSingle;
var c:single;
begin
if val = nil then
begin
st.read(c,4);
Share.dtReal(Result,c);
end
else
begin
c := ToReal(val^);
st.Write(c,4);
end;
end;
карма: 27
0
Ответов: 8959
Рейтинг: 824
#3: 2008-08-31 14:26:03 ЛС | профиль | цитата
Dilma, добавил, всё в порядке, читает и переводит (я сам-то и не догадался, а пошёл в гору ), спасибо!
карма: 19

0
Ответов: 9906
Рейтинг: 351
#4: 2008-08-31 15:01:39 ЛС | профиль | цитата
Еще проще, помнить то, чего тебе уже давали
А это, если любопытен именно каждый битик:



Редактировалось 1 раз(а), последний 2017-07-08 16:08:49
карма: 9

1
файлы: 1single.png [19.1KB] [500]
Голосовали:Andrey
Ответов: 8959
Рейтинг: 824
#5: 2008-08-31 16:40:56 ЛС | профиль | цитата
Galkov, так я помнил о Вашей помощи, но не смог её найти здесь, а свой компьютор ещё с летнего отдыха не перевёз. За картиночку спасибо, ранее не встречал
карма: 19

0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)