Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.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
如何将浮点数组转换为字节[2]数组并返回java_Java - Fatal编程技术网

如何将浮点数组转换为字节[2]数组并返回java

如何将浮点数组转换为字节[2]数组并返回java,java,Java,我正在将DSP效果应用于我的原始音频输入(字节[2]数组格式)。要应用DSP,我需要将字节数组转换为浮点数组并返回。要将字节数组转换为浮点数组,我使用以下代码: private byte[] buffer; /* * * Converts a byte[2] to a float, in LITTLE_ENDIAN format */ private float getFloat(byte argB1, byte argB2) { return (float) (argB1 |

我正在将DSP效果应用于我的原始音频输入(字节[2]数组格式)。要应用DSP,我需要将字节数组转换为浮点数组并返回。要将字节数组转换为浮点数组,我使用以下代码:

private byte[] buffer;
/*
 * 
 * Converts a byte[2] to a float, in LITTLE_ENDIAN format
 */
private float getFloat(byte argB1, byte argB2) {
    return (float) (argB1 | (argB2 << 8));
}
for (int i = 0; i < N / 2; i++) { 
    curSample[i] = getFloat(buffer[i * 2],
    buffer[i * 2 + 1]);}
专用字节[]缓冲区;
/*
* 
*以LITTLE_ENDIAN格式将字节[2]转换为浮点
*/
私有浮点getFloat(字节argB1,字节argB2){

返回(浮点)(ARGB1*(Agb2将字节数组转换为浮点数组),您所做的不考虑字节数。< /P>
int myInt = (byte[0] << 24) |
((byte[1] & 0xff) << 16) |
((byte[2] & 0xff) << 8) |
(byte[3] & 0xff);
将其转换回字节数组

  int j=0;
  byte[] byteArray=new byte[4];
  int data=Float.floatToIntBits(asFloat);
  byteArray[j++]=(byte)(data>>>24);
  byteArray[j++]=(byte)(data>>>16);
  byteArray[j++]=(byte)(data>>>8);
  byteArray[j++]=(byte)(data>>>0);

我还发现一些类似的信息

Float是一个32位的值,它是如何从两个字节转换成它的?也许你应该使用floatToIntBits将Float转换成字节数组。在将一些DSP应用到
asFloat
…我如何将Float转换回字节?
float asFloat = Float.intBitsToFloat(asInt);
  int j=0;
  byte[] byteArray=new byte[4];
  int data=Float.floatToIntBits(asFloat);
  byteArray[j++]=(byte)(data>>>24);
  byteArray[j++]=(byte)(data>>>16);
  byteArray[j++]=(byte)(data>>>8);
  byteArray[j++]=(byte)(data>>>0);