0

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

4

2 回答 2

2

short 是16 bittype , byte 是8 bittype 。所以从一个n长度短的数组你会得到一个2n长度字节数组。

基础知识

在转换数组之前,关于将单个短字节转换为字节。因此,根据上面的行,您将从单个短中创建 2 个字节。

原理是将前 8 位存储两个字节,并将后 8 位存储到另一个短字节。代码将是这样的

byte b1, b2;
short s;

b1 = s & 0xff;
b2 = (s >> 8) & 0xff;

现在数组

现在将上述主体用于数组。说short的数组大小是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 类将短数组转换为字节数组。

ByteBuffer byteBuf = ByteBuffer.allocate(2*n);
for(int i = 0; i<n ; i++) {
    byteBuf.putShort(buffer[i]);
}
于 2013-05-31T07:51:08.650 回答
0

唯一的方法是创建一个与短数组大小相同的字节数组并复制短数组元素

于 2013-05-31T07:40:42.487 回答