[英]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.