首页 > 解决方案 > 以 HEX 格式获取浮点数

问题描述

我有字符串char str [8]。它以 HEX 格式表示一个数字。它是浮动的,带有标志。如何将其写入浮点类型的变量?

例如:

char str[9] = "41700000\0";

我需要从中获取 val:15.0

标签: cfloating-pointhex

解决方案


这是将 15 从十六进制 4 字节表示还原回来的一种快速而肮脏的方法。但是,它有太多的错误,甚至不能开始谈论它,而正确的做法是问自己“为什么我需要从这个开始,以及我怎样才能做得更好”。

float hexStrToFloat(const char* str)
{
    union { unsigned int i; float f; } tmp;
    sscanf_s(str, "%x", &tmp.i);
    return(tmp.f);
}

脚注:假设机器为 little-endian,32 位或更高版本。


推荐阅读