Чтобы создать символьную строку, представляющую число в удобочитаемой форме, используйте snprintf (), как показано в коде ниже.
Чтобы получить доступ к байтам двойного числа, используйте объединение.Например, союз u {double d;char arr [8];}
Однако, исходя из добавленного вами комментария, возможно, вы хотите преобразовать число из символов в двойное.Смотрите вызов atof () в коде ниже.Код выдает следующие 4 строки вывода:
u.d = 2.132000 u.arr = 75 ffffff93 18 04 56 0e 01 40
res = 2.13200000
u.d = 37.456700 u.arr = ffffffa6 0a 46 25 75 ffffffba 42 40
res = 37.45670000
Код:
#include <stdio.h>
#include <stdlib.h>
union MyUnion { char arr[8]; double d; };
void printUnion (union MyUnion u) {
int i;
enum { LEN=40 };
char res[LEN];
printf ("u.d = %f u.arr = ", u.d);
for (i=0; i<8; ++i)
printf (" %02x", u.arr[i]);
printf ("\n");
snprintf (res, LEN, "%4.8f", u.d);
printf ("res = %s\n", res);
}
int main(void) {
union MyUnion mu = { .d=2.132 };
printUnion (mu);
mu.d = atof ("37.4567");
printUnion (mu);
return 0;
}