バイト値が0-127に増加すると-128が0になり、次の有効ビットが増加します。 8バイトの数字を2つ追加するにはどうしたらいいですか?byte []配列に格納された2つの8バイト数を追加する方法
byte[] array = {(byte) (0), (byte) (0), (byte) (0), (byte) (0), (byte) (0), (byte) (0), (byte) (0), (byte) (0)};
byte[] incrementedarray = byteIncrement(array);
for(int k=1;k<=5823;k++) { // 5824 samples for 1st page
incrementedarray = byteIncrement(incrementedarray);
}
:私はこのバイト配列を5284回インクリメントするとき
public static byte[] byteIncrement(byte[] array) {
byte[] r = array.clone();
for (int i = array.length - 1; i >= 0; i--) { // LSB to MSB
byte x = array[ i ];
if (x == -1)
continue;
r[ i ] = (byte) (x + 1);
Arrays.fill(r, i + 1, array.length, (byte) 0);
return r;
}
throw new IllegalArgumentException(Arrays.toString(array));
}
は、例えば、私は5824個のサンプルの上に与えられた値を取得:
5824 samples = 0 0 0 0 0 0 22 -64
6272 samples = 0 0 0 0 0 0 24 -128
-----------------------------------
12096 samples = 0 0 0 0 0 0 47 64
5824 samples + 6272 samples = 12096 samples
私はこのコードを使用してバイト配列をインクリメントしていだから私の質問は、上記のように8バイト(64ビット)の数字を追加する方法です。 OGGオーディオビットストリームのグラニュール位置がこのように格納されるため、バイト配列を使用しています。私はそのような追加を行う必要がある2つのビットストリームを結合しようとしています。
なぜ8バイトの配列の代わりに 'long'sを使うだけでなく、 –
または、バイト配列をlongに変換し、addを実行し、実際にこれらのバイト配列が必要な場合は、それを元に戻します。 – EJP
私は上記のようなバイト配列で格納されたエンコードされたデータを持っています。 longに変換する方法はありますか?操作を行い、変換して戻しますか? – Ali