将字节数组转换为Int数组java

时间:2011-05-02 17:53:10

标签: java

我有一个ByteArrayOutputStream与来自AudioSource的Dataline相关联。我需要将Stream转换为一些有意义的值,这些值很可能是从源获取的声音值? 那么我怎样才能在intArray中收敛byteArray(来自ByteArrayOutStream.getByteArray())?我用Google搜索但没有运气。

p.s。我使用的audioFormat是:PCM_SIGNED 192.0Hz 16Bit big endian

3 个答案:

答案 0 :(得分:7)

使用ByteBuffer。您不仅可以通过这种方式转换为不同的数组类型,还可以处理 endian 问题。

答案 1 :(得分:3)

您可以尝试以下操作:

ByteBuffer.wrap(byteArray).asIntBuffer().array()

答案 2 :(得分:1)

当您执行ByteArrayOutStream.toByteArray()时,您会得到:byte[]。所以现在,我假设您需要将byte []转换为int。

你可以this

/**
 * Convert the byte array to an int.
 *
 * @param b The byte array
 * @return The integer
 */
public static int byteArrayToInt(byte[] b) {
    return byteArrayToInt(b, 0);
}

/**
 * Convert the byte array to an int starting from the given offset.
 *
 * @param b The byte array
 * @param offset The array offset
 * @return The integer
 */
public static int byteArrayToInt(byte[] b, int offset) {
    int value = 0;
    for (int i = 0; i < 4; i++) {
        int shift = (4 - 1 - i) * 8;
        value += (b[i + offset] & 0x000000FF) << shift;
    }
    return value;
}