У меня есть шестнадцатеричный номер. string, и я хочу преобразовать его в float. Может ли кто-нибудь предложить какую-либо идею? Я искал здесь, на этом форуме, и я получил одно сообщение, в котором упоминалось следующее решение. Я понял, что первая строка преобразуется в шестнадцатеричный номер, а затем hex no преобразуется в float. Но я не понял, как это происходит float_data = *((float*)&hexvalue);
. И этот код также не работает с этим методом.Преобразование шестнадцатеричного значения в float в C
Исправление 1: Я думаю, что я не упоминал здесь четко. Прошу прощения. Это шестнадцатеричное значение 39 39 2e 30 35
при преобразовании в ascii, то оно дает 99.05. И мне нужен этот ascii как float no. Ниже мой код:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main()
{
char *my_data;
double float_data;
unsigned int hexvalue;
my_data = malloc (100);
my_data =strcpy(my_data, "39 39 2e 30 35");
sscanf (my_data, "%x", &hexvalue);
float_data = *((float*)&hexvalue);
printf ("the floating n. is %f", float_data);
free (my_data);
return 0;
}
Каков ожидаемый результат? –
Это любопытно; существует несколько систем, где число с плавающей запятой составляет 5 байтов. Что вы должны делать? Где десятичная точка? Преобразование одного байта в 'float' вряд ли принесет полезное значение. 'Malloc()' и 'strcpy()' кажутся излишними. Возможно, вы разделили много кода и переделали его; строки управления памятью являются излишними, но, возможно, более объяснимыми (MCVE - [Как создать минимальный, полный и проверенный пример?] (http://stackoverflow.com/help/mcve)). –