我四处搜寻,找不到一个很好的问题来回答这个问题:
给定一个整数,使用Q Format https://en.wikipedia.org/wiki/Q_(number_format),如何将该数字转换为普通浮点类型?
反之亦然:如何将浮点类型转换为Q Format https://en.wikipedia.org/wiki/Q_(number_format)整数?
例如,Q2 整数5
应该1.25
浮点数和浮点数1.25
应该是整数5
以 Q2 格式。
下面是一个通用的C++解决方案:
template<class IntegerType>
float qToFloat(IntegerType q, int fractional_bits)
{
return ((float) q) * std::pow(2, -fractional_bits);
}
template<class IntegerType>
IntegerType floatToQ(float q, int fractional_bits)
{
return (int) (q * std::pow(2, fractional_bits));
}
用法示例:
qToFloat<uint16_t>(5, 2); //1.25
floatToQ<uint16_t>(1.25f, 2); //5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)