ЕСЛИ ВСЕ верно:
- Ваша машина с прямым порядком байтов.
- На вашем компьютере
sizeof(double) == 8
- Представление вашей машины о "байте" такое же, как и о машине, которая сохранила данные (не все машины используют октеты / 8-битные байты).
- Формат вашей машины с плавающей запятой соответствует формату машины, на которой были сгенерированы / сохранены данные.
Вы можете просто прочитать 8 байтов в массив и выполнить приведение (предполагается, что 'fd' - дескриптор открытого файла):
char bytes[8];
fread(&bytes, 8, 1, fd);
double d = *((double*)bytes);
В целом, однако, я бы предложил не сохранять подобные двоичные данные. Да, раньше это было обычным делом, и многие все еще делают это, но с современным оборудованием это действительно не нужно и приводит к подобным ситуациям, когда вы можете легко десериализовать его, только если ваша платформа точно соответствует платформе, на которой она была написана на диск. Выберите переносимый формат - понятный человеку на основе UTF-8, если можете - и используйте его.