我正在使用音频,我在短阵列上保存了音频数据。我想将其转换为字节数组来存储wav文件。我不知道将short []转换为byte []。你能帮助我吗。 非常感谢你。
答案 0 :(得分:2)
short是16 bit
类型,byte是8 bit
类型。因此,从n
长短数组中,您将得到一个2n
长度的字节数组。
基础知识
在转换数组之前将单个short转换为byte。因此,根据上面的行,您将从一个短片创建2个字节。
原理是将前8位存储在一个字节中,并将第二个8位存储到另一个短路中。代码将是这样的
byte b1, b2;
short s;
b1 = s & 0xff;
b2 = (s >> 8) & 0xff;
现在数组
现在使用上面的数组主体。说短的数组大小是n。让短信是s
byte result[2*n];
for(int i = 0; i<2*n ; i=i+2){
b[i] = s[i>>1] & 0xff;
b[i+1] = (s[i>>1 | 1] >> 8) & 0xff;
}
使用ByteBuffer类
你也可以使用ByteBuffer类将短数组转换为bytearray。
ByteBuffer byteBuf = ByteBuffer.allocate(2*n);
for(int i = 0; i<n ; i++) {
byteBuf.putShort(buffer[i]);
}
答案 1 :(得分:0)
唯一的方法是创建一个与short数组大小相同的字节数组并复制短数组元素