将ByteArray转换为IntArray java
我有一个将ByteArray转换为IntArray java,java,Java,我有一个ByteArrayOutputStream与音频源的数据线连接。我需要将流转换成一些有意义的值,这些值可能是从源中获取的声音值,或者不是? 那么,如何在intArray中转换byteArray(从ByteArrayOutStream.getByteArray())?。我用谷歌搜索了一下,但运气不好 p.s.我使用的音频格式是:PCM_签名192.0Hz 16位big-endian使用ByteBuffer。您不仅可以通过这种方式转换为不同的数组类型,还可以处理endian问题。通过tear
ByteArrayOutputStream
与音频源的数据线连接。我需要将流转换成一些有意义的值,这些值可能是从源中获取的声音值,或者不是?
那么,如何在intArray中转换byteArray(从ByteArrayOutStream.getByteArray()
)?。我用谷歌搜索了一下,但运气不好
p.s.我使用的音频格式是:PCM_签名192.0Hz 16位big-endian使用
ByteBuffer
。您不仅可以通过这种方式转换为不同的数组类型,还可以处理endian问题。通过tearrayoutstream.toByteArray()执行时,您会得到:字节[]
。现在,我假设您需要将byte[]转换为int
你可以做:
/**
*将字节数组转换为int。
*
*@param b是字节数组
*@返回整数
*/
公共静态int byteArrayToInt(字节[]b){
返回byteArrayToInt(b,0);
}
/**
*将字节数组转换为从给定偏移量开始的整数。
*
*@param b是字节数组
*@param offset数组偏移量
*@返回整数
*/
公共静态int byteArrayToInt(字节[]b,int偏移量){
int值=0;
对于(int i=0;i<4;i++){
整数移位=(4-1-i)*8;
value+=(b[i+偏移量]&0x000000FF)您可以尝试以下操作:
ByteBuffer.wrap(byteArray).asIntBuffer().array()
从字节数组到int数组的转换需要什么?for(int i=0;i<4;i++){int shift=(4-1-i)*8;value+=(b[i+偏移量]&0x000000FF)不,整数是4个字节,所以你只需在正确的位置依次添加一个字节-虽然我个人不会使用add来做这件事,但效果也很好(速度最低,但如果你不调用函数数十亿次,这并不重要)。无论如何,最好使用ByteBuffer。还请注意,不考虑endianness。UnsupportedOperationException
ByteBuffer.wrap(byteArray).asIntBuffer().array()