如何将16位PCM音频字节数组转换为双精度或浮点型数组?

如何将16位PCM音频字节数组转换为双精度或浮点型数组?,第1张

如何将16位PCM音频字节数组转换为双精度或浮点型数组

没有替代。您必须运行循环并分别转换数组的每个元素。

我为漂浮的短裤做同样的事情:

public static float[] floatMe(short[] pcms) {    float[] floaters = new float[pcms.length];    for (int i = 0; i < pcms.length; i++) {        floaters[i] = pcms[i];    }    return floaters;}
根据评论编辑4/26/2012

如果确实有16位PCM,但将其作为字节[],则可以执行以下 *** 作:

public static short[] shortMe(byte[] bytes) {    short[] out = new short[bytes.length / 2]; // will drop last byte if odd number    ByteBuffer bb = ByteBuffer.wrap(bytes);    for (int i = 0; i < out.length; i++) {        out[i] = bb.getShort();    }    return out;}

然后

float[] pcmAsFloats = floatMe(shortMe(bytes));

除非您使用的是一个怪异且设计不佳的类,该类首先为您提供了字节数组,否则该类的设计人员应该打包字节,以与Java将字节(一次2个)转换为短裤的方式保持一致。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5430073.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存