Показать сообщение отдельно
  #2  
Старый 25.01.2013, 16:14
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Вообще-то такой перевод в дабл мягко говоря... не правильный. Дробные типы имеют не простое устройство, там есть степень и значимая часть, таким простым копированием будет бред. Разве что делфа сама догадается перевести массив в int64, а потом оттуда в дабл специальным образом.
Что представляют собой эти самые элементы массива? Если байтовые разряды, то считаем, что число записано в 256-ричной системе счисления, где 1 байт - 1 разряд.
Код:
d := 0;
for i := count - 1 downto 0 do
 d := d * 256 + arr[i];

ЗЫЖ 8 байт - это около 1.8*10^19. Если ты собираешься переводить 16 байт, значит число у тебя может быть примерно 3.24*10^38. Ты уверен, что тебе нужно переводить в дабл с дикой потерей точности? double способен вместить около 16 значащих цифр, остальное будет считаться как забитое нулями. То есть число 0x12345678876543215555555555555555 будет обрабатываться как 0x12345678876543210000000000000000.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием