私はオーディオを扱っています。オーディオデータを短い配列に保存しました。これをバイト配列に変換してwavファイルを格納したい。short[] を byte[] に変換する方法がわかりません。手伝って頂けますか。どうもありがとうございました。
質問する
1684 次
2 に答える
2
short は16 bit
type 、 byte は8 bit
type です。したがって、長さの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 に答える