如何将 Q 格式的整数转换为浮点数(反之亦然)
How do I convert Q format integers to float (or vice versa)?
我四处搜索,找不到一个好的SO问题,对这个问题有一个一般的答案:
给定一个使用 Q 格式的整数,如何将该数字转换为普通浮点类型?
反之亦然:如何将浮点类型转换为 Q 格式整数?
例如,Q2 整数5
应以浮点形式1.25
,浮点数1.25
应为 Q2 格式的整数5
。
以下是一般的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
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 使用提升将数据从 PyObject 复制到浮点数 *
- 使用浮点数和双精度数的非常小数字的数学
- 使用英特尔内联函数将打包的 8 位整数乘以浮点数向量
- 如何在 c++ 中将小数点后两位数的浮点数分配给另一个浮点数
- 返回浮点数的小数位数
- txt 文件中浮点数的最大和最小值
- 为什么 std::cout 打印浮点数、双精度和长双精度到相同的小数精度?
- 将浮点数转换为无符号字符数组并打印出来
- 如何将时间字符串 (M:SS) 转换为浮点数
- 如何将浮点数(*)[6]转换为浮点**类型?
- C++将浮点数乘以分数
- 如何将浮点数转换为uint8_t?
- 将字符串转换为浮点数或整数,而无需使用内置函数(如 atoi 或 atof)
- 如何在C++(Arduino)中将浮点数组转换为字节数组
- 在数学上将浮点数四舍五入到 N 位小数
- Cython通过浮点数的最快方式,用于高频控制回路
- 如何将 Q 格式的整数转换为浮点数(反之亦然)