Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将ByteArray转换为IntArray java_Java - Fatal编程技术网

将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()