byte []为双重表示

时间:2015-03-30 16:49:03

标签: java casting double bytearray

我有一些wav阅读的麻烦。 我必须为每个样本读取一个wav文件样本。

要做到这一点,我首先尝试打印我的128个第一个样本,看看我是否有好的价值(我知道它们是什么)。要做到这一点:

private int bytesToInt(byte[] fenetre, int debut, int nbByte) {
    int res = 0;
    for (int i = 0; i < nbByte; i++) {
        res <<= 8;
        res += fenetre[debut + i];
    }
    return res;
}

public void afficherPremiereFenetre() throws IOException {
    int tailleFenetre = 128;
    int nbBytePerSample = au.getFormat().getFrameSize();
    int nbBytePerFrame = tailleFenetre * nbBytePerSample;
    byte[] fenetre = new byte[nbBytePerFrame];
    au.read(fenetre, 0, nbBytePerFrame);
    for (int i = 0; i < nbBytePerFrame; i += nbBytePerSample) {
        System.out
                .println((double) bytesToInt(fenetre, i, nbBytePerSample));
    }
}

所以我的问题是:如何真正将我的byte []帧翻译为double?

1 个答案:

答案 0 :(得分:1)

您可以使用java.nio.ByteBuffer

来实现此目的
ByteBuffer.wrap(fenetre).getDouble();
  

给定一个直接字节缓冲区,Java虚拟机将做到最好   努力直接执行本机I / O操作。这就对了   将尝试避免将缓冲区的内容复制到(或来自)   中间缓冲区之前(或之后)每次调用其中一个   底层操作系统的本机I / O操作。