Главная страница
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.062 c
3-40823
denmin
2003-10-22 10:35
2003.11.13
Можно ли создать локальные таблицы на машине?


7-42145
Эдуард
2003-09-03 17:29
2003.11.13
Как корректно (!) не дать приложению закрыться


1-41181
Volly
2003-11-02 16:03
2003.11.13
Реализация переменного кол-ва параметров


8-41741
Linork
2003-07-14 21:12
2003.11.13
Програмирование по MEDIA


4-42269
miguel1
2003-09-08 16:45
2003.11.13
Программирование голосовых функций модема при помощи TAPI