栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何将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个)转换为短裤的方式保持一致。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454547.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号