0

過去にバイトシフトをあまり行ったことがないので、ここで少し損をしています。基本的に、サイズ 26 の double 配列があり、Java で 1 つの UDP パケットで配列を送信する必要があります。1 つの double を bytearray に変換する方法の例をいくつか見つけましたが、それを double-array に適用する方法がわかりません。

では、これはどのように行うべきですか?double 配列をループして各 double を変換し、何らかの形でそれらを 1 つの bytearray に連結しますか?

4

3 に答える 3

5

java.nio.ByteBuffer を使用して double をバイト配列に変換します

ByteBuffer bb = ByteBuffer.allocate(doubles.length * 8);
for(double d : doubles) {
   bb.putDouble(d);
}

バイト配列を取得する

byte[] bytearray = bb.array();

ネット経由で送信し、受信側で double 配列に変換します

ByteBuffer bb = ByteBuffer.wrap(bytearray);
double[] doubles = new double(bytearray.length / 8);
for(int i = 0; i < doubles.length; i++) {
    doubles[i] = bb.getDouble();
}
于 2013-06-03T09:15:34.070 に答える
4

では、これはどのように行うべきですか?double 配列をループして各 double を変換し、何らかの形でそれらを 1 つの bytearray に連結しますか?

丁度。おそらく、DoubleBuffer を利用できます。(マルコは彼のコメントでそれをリンクしました)

マルコが言及したのは、実際に ByteBuffer を持ち、それに「DoubleBuffer」ビューをフェッチすることでした。したがってput、Double を DoubleBuffer ビューに入れ、元の ByteBuffer から byte[] を取得できます。

于 2013-06-03T08:24:16.643 に答える