【发布时间】:2020-05-08 17:39:55
【问题描述】:
我有字符串char str [8]。它以 HEX 格式表示一个数字。它是浮动的,带有标志。如何将其写入浮点类型的变量?
例如:
char str[9] = "41700000\0";
我需要从中获取 val:15.0
【问题讨论】:
-
char str[8] = "41700000";不是字符串,因为它不是以空值结尾的。 -
很难理解你在问什么。你是说
"41700000"是十六进制的。要将其转换为 32 位float? -
@FiddlingBits 是的。我做了相反的事情
float d = atof(str); printf("%X \n",*(unsigned int*)&d);,当我输入 15.0 时,它给了我十六进制的数字。我将此与一些可以让您从 Real2Hex 进行转换的网站进行了比较。 -
*(unsigned int*)&d是 UB。使用union或memcpy()。 -
也许
printf("%.1f\n", ((union { int i; float f; }) { .i = atoi(str) }).f);?
标签: c floating-point hex