Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Помогите с числами...   Найти похожие ветки 

 
BillyJeans ©   (2003-11-04 11:06) [0]

Есть некий файл, в котором хранятся суммы в непонятном для меня виде, а именно:
число -720.00 хранится как 010000000000008086С0
числи 6296.28 хранится как 0100E17A14AE4798B840
знаю только, что целая часть занимает 8 байт, дробная 2 байта.

Может у кого есть идеи на этот счет???


 
phan   (2003-11-04 11:14) [1]

Я так понимаю это Extended,
а откуда данные про 8 и 2 байта?


 
BillyJeans ©   (2003-11-04 11:22) [2]

Я так понимаю это Extended
а есть ли способы конвертации?

а откуда данные про 8 и 2 байта?
из описания структуры...


 
TUser ©   (2003-11-04 11:38) [3]

1. читать из file of type не катит? Тогда, наверное, так
2. var secondVar:extended absolute firstVar;
begin
// Прочитать в переменную firstVar строку из файла
// Тогда в SecondVar окажется правильное значение.

Но это, если ты точно знаешь типа своей переменной.


 
BillyJeans ©   (2003-11-04 11:48) [4]

Но это еще не факт, что число хранится как Extended...


 
Anatoly Podgoretsky ©   (2003-11-04 11:51) [5]

Так в описании что то сказано насчет формата. А Extended или нет весьма просто проверить, записав эти два числа в свой файл.


 
BillyJeans ©   (2003-11-04 11:54) [6]

В описании ничего нет, кроме того, что до запятой 8 чисел, после 2 числа


 
Amoeba   (2003-11-04 12:02) [7]

Маразм крепчает...


 
han_malign ©   (2003-11-04 12:19) [8]

>до запятой 8 чисел, после 2 числа
- дык, это договоренность об округлении десятичного представления числа, что не мешает бинарному представлению в виде Extended.


 
han_malign ©   (2003-11-04 12:40) [9]

короче первое слово, похоже, колличество элементов, далее восемь байт double:
program extnd;
{$APPTYPE CONSOLE}
uses Windows,
Utils in "..\Common\Utils.pas";
var ex: double;
const d1: packed array[0..9]of byte=($01,$00,$00,$00,$00,$00,$00,$80,$86,$C0);
d2: packed array[0..9]of byte=($01,$00,$E1,$7A,$14,$AE,$47,$98,$B8,$40);
begin
move(d1[2],ex,sizeof(ex));
Writeln(ex);
move(d2[2],ex,sizeof(ex));
Writeln(ex);
end.

-7.20000000000000E+0002
6.29628000000000E+0003


 
BillyJeans ©   (2003-11-04 17:03) [10]

han_malign © (04.11.03 12:40) [9]

Да, да! оно самое!!!



Страницы: 1 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
7-42203
freeborn
2003-08-24 22:00
2003.11.13
Трабл: Программа не дает выключить комп


4-42267
Dark Elf
2003-09-18 16:54
2003.11.13
SHBrowseForFolder


1-41617
race1
2003-10-25 15:21
2003.11.13
region


6-41780
SergP
2003-09-16 11:01
2003.11.13
Можно ли как-нить узнать свободен ли данный порт?


4-42244
Jack
2003-09-16 14:00
2003.11.13
ReadDitectoryChangeW