如何在C/C++中将short类型的数组转换为double类型的数组?
我有一段代码用于从wav文件中读取音频数据,输出的是short类型的数组。现在我想使用这些数据进行FFT(我不想使用库)。
有什么技巧或想法吗?
你不能 转换 数组;但是你可以使用转换后的值创建一个新的数组:
#include <iterator>
#include <algorithm>
short src[10] = ...;
double dst[sizeof(src)/sizeof(short)];
std::copy(std::begin(src), std::end(src), dst); // generic, C++11
std::copy(src, src + 10, dst); // a bit more hackish
std::array<float, 10> src;
等方式。std::vector<float> src = ... ;
std::vector<double> dst(src.begin(), src.end());
(src - 32K)/32K
处理。 - edA-qa mort-ora-ysizeof(src)/sizeof(src[0])
写成代码中的偏好写法,而不是sizeof(src)/sizeof(short)
。以防将来更改了src的类型。 - Martin York