Вообще-то такой перевод в дабл мягко говоря... не правильный. Дробные типы имеют не простое устройство, там есть степень и значимая часть, таким простым копированием будет бред. Разве что делфа сама догадается перевести массив в 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.