从 short 转换为 double 时如何保存波形数据?

How do you preserve wave data when casting from a short to a double?

我已经使用 Java 从波形文件中读取数据到一个短数组中,因为波形数据存储为 16 位二进制补码。

我正在使用 fftw 从波形数据中提取频率信息,但它只接受双数组。

所以我想我需要在将负数存储到 double 数组之前将它们加 32768,在将它们存储到 double 数组之后将正数添加 32768。这对我来说似乎需要很多 cpu 的力量。

这是为fftw保存波形数据的正确方法吗?有没有更好的方法在保留波形数据的同时将短裤转换为双打?

beundead在评论中给出了答案:

"Have you considered (double) Short.toUnsignedInt(yourShortHere);?"