如何在C / C ++中将short类型的数组转换为double类型的数组?
我有代码从wav文件读取音频数据,输出是short类型的数组。所以现在我想将这些数据用于FFT(我不想使用库)。
任何技巧或想法?
答案 0 :(得分:7)
你不能转换数组;但是,您可以使用转换后的值创建一个新数组:
#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());