【发布时间】:2010-05-26 19:39:47
【问题描述】:
我正在用 C++ 编程。我需要将 24 位有符号整数(存储在 3 字节数组中)转换为浮点数(归一化为 [-1.0,1.0])。
平台是 x86 上的 MSVC++(这意味着输入是 little-endian)。
我试过这个:
float convert(const unsigned char* src)
{
int i = src[2];
i = (i << 8) | src[1];
i = (i << 8) | src[0];
const float Q = 2.0 / ((1 << 24) - 1.0);
return (i + 0.5) * Q;
}
我不完全确定,但我从这段代码中得到的结果似乎不正确。那么,我的代码错了吗?如果错了,为什么?
【问题讨论】:
-
实际代码是 C++。这不是我的代码,我也没说它漂亮。
标签: c++ c floating-point integer 24-bit