繁体   English   中英

转换int16_t内存以浮动

[英]Cast int16_t memory to float

我有一个来自外部源的函数,该函数返回2个uint16_t元素的数组(我将其转换为int)。

我已经能够将它们转换为一个“大”整数( (i1 << 16) + i2

现在,我需要将其强制转换为浮点数,将点值保持在内存中。

任何人都可以提出建议或指出正确的方向吗?

提前致谢!

我建议保持清楚,您正在弄乱并使用memcpy:

float a;
int b;

memcpy(&a,&b,min(sizeof(a),sizeof(b)));

某人可能会在您早已离开时遇到您的代码,在这种情况下,这将表明有意发生了一些特殊情况。

我会使用工会:

union fltconv {
    float f;
    uint32_t i;
} u;
u.i = ((uint32_t) i1 << 16) | i2;
float f = u.f;

关于您正在做的事情更加明确。 请记住,这是非常不可移植的。

也许这样的事情行得通吗?

uint32_t a = ....; // Contains your big int.
float b = *(float*)&a;

当然,这需要您知道int与float具有相同的大小...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM