如何将短数组转换为字节数组?

时间:2013-05-31 07:36:47

标签: java audio

我正在使用音频,我在短阵列上保存了音频数据。我想将其转换为字节数组来存储wav文件。我不知道将short []转换为byte []。你能帮助我吗。 非常感谢你。

2 个答案:

答案 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数组大小相同的字节数组并复制短数组元素