【发布时间】:2015-12-28 10:13:08
【问题描述】:
我有一个十六进制数字。字符串,我想将其转换为浮点数。任何人都可以提出任何想法吗?我在这个论坛中搜索了这里,我得到了一篇提到以下解决方案的帖子。我知道第一个字符串被转换为十六进制数字,然后十六进制数字被转换为浮点数。但我不明白float_data = *((float*)&hexvalue); 是如何发生的。而且代码也不适用于这种方法。
更正1:我想我在这里没有明确提及。非常遗憾。这个十六进制值 39 39 2e 30 35 转换为 ascii 时,它会给出 99.05。我需要这个ascii作为浮点数。
以下是我的代码:
#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 — How to create a Minimal, Complete, and Verifiable Example?)。
标签: c floating-point hex