录音系列:java运算符
Posted zhangjin1120
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了录音系列:java运算符相关的知识,希望对你有一定的参考价值。
- 在pcm转wav,就是在原来的byte[]前面增加header,header是一个长度为44的字节数组。
byte[] header = new byte[44];
header[0] = 'R'; // RIFF/WAVE header
header[1] = 'I';
header[2] = 'F';
header[3] = 'F';
header[4] = (byte) (totalDataLen & 0xff);
header[5] = (byte) ((totalDataLen >> 8) & 0xff);
header[6] = (byte) ((totalDataLen >> 16) & 0xff);
header[7] = (byte) ((totalDataLen >> 24) & 0xff);
header[8] = 'W';
header[9] = 'A';
header[10] = 'V';
header[11] = 'E';
header[12] = 'f'; // 'fmt ' chunk
header[13] = 'm';
header[14] = 't';
header[15] = ' ';
header[16] = 16; // 4 bytes: size of 'fmt ' chunk
header[17] = 0;
header[18] = 0;
header[19] = 0;
header[20] = 1; // format = 1
header[21] = 0;
header[22] = (byte) channels;
header[23] = 0;
header[24] = (byte) (longSampleRate & 0xff);
header[25] = (byte) ((longSampleRate >> 8) & 0xff);
header[26] = (byte) ((longSampleRate >> 16) & 0xff);
header[27] = (byte) ((longSampleRate >> 24) & 0xff);
header[28] = (byte) (byteRate & 0xff);
header[29] = (byte) ((byteRate >> 8) & 0xff);
header[30] = (byte) ((byteRate >> 16) & 0xff);
header[31] = (byte) ((byteRate >> 24) & 0xff);
header[32] = (byte) (2 * 16 / 8); // block align
header[33] = 0;
header[34] = 16; // bits per sample
header[35] = 0;
header[36] = 'd';
header[37] = 'a';
header[38] = 't';
header[39] = 'a';
header[40] = (byte) (totalAudioLen & 0xff);
header[41] = (byte) ((totalAudioLen >> 8) & 0xff);
header[42] = (byte) ((totalAudioLen >> 16) & 0xff);
header[43] = (byte) ((totalAudioLen >> 24) & 0xff);
header[4]用到&
操作符,按位与。
&按位与的运算规则,是将两边的数转换为二进制位,(两个为真才为真)。
1&1=1 , 1&0=0 , 0&1=0 , 0&0=0
测试一下
public class OperatorTest {
public static void main(String[] args) {
int i1 = 3 & 5;
System.out.println(i1);
int i2 = 1280 & 0xff;
System.out.println(i2);
}
}
header[5]用到了>>
操作符,右移运算符。
int i3 = 11 >> 2;
System.out.println(i3); //2
int i4 = 1280 >> 8;
System.out.println(i4); //5 101 0000 0000右移动8位,是101,10进制是5。
![](https://image.cha138.com/20210612/ae21aee2d56545c28dd3535be754f64b.jpg)
以上是关于录音系列:java运算符的主要内容,如果未能解决你的问题,请参考以下文章