我有一个十六进制数字。字符串,我想将其转换为浮动。任何人都可以提出任何想法我在这个论坛搜索了这里,我找到了一篇文章提及下面的解决方案。我明白,第一个字符串转换为十六进制数,然后十六进制数转换为浮点数。但我不明白float_data = *((float*)&hexvalue);
是怎么发生的。而且该代码也不适用于此方法。将十六进制转换为浮点数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))。 –