将短裤数组转换为双精度数组

and*_*rey 3 c c++ arrays types

如何在C/C++中将short类型的数组转换为double类型的数组?

我有代码从wav文件中读取音频数据,输出是short类型的数组.所以现在我想将这些数据用于FFT(我不想使用库).

任何技巧或想法?

Ker*_* SB 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
Run Code Online (Sandbox Code Playgroud)

更好的是使用std::array<float, 10> src;

如果您的"数组"实际上是动态数据结构,它会变得更加容易:

std::vector<float> src = ... ;
std::vector<double> dst(src.begin(), src.end());
Run Code Online (Sandbox Code Playgroud)

  • 首选`sizeof(src)/ sizeof(src [0])`超过`sizeof(src)/ sizeof(short)`.以防万一你将来改变src的类型. (5认同)