0

私はオーディオを扱っています。オーディオデータを短い配列に保存しました。これをバイト配列に変換してwavファイルを格納したい。short[] を byte[] に変換する方法がわかりません。手伝って頂けますか。どうもありがとうございました。

4

2 に答える 2

2

short は16 bittype 、 byte は8 bittype です。したがって、長さのn短い配列から、長さの2nバイト配列を取得します。

基礎

配列を変換する前に、単一のショートをバイトに変換することについて。上記の行に従って、1 つのショートから 2 バイトを作成します。

原則として、最初の 8 ビットを 1 バイトに 2 つ格納し、2 番目の 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 クラスを使用して short 配列を bytearray に変換することもできます。

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