UDP パケットを受信する配列のバイトがあり、それを float 配列に変換します。問題は、反復ごとに配列をクリアし、新しいパケットを配列に追加したいときに、そこに受信したパケットを書き込むことです!
私はこのコードを使用します:
float[] receive = new float[] {}
受信パケットをアレイに追加するには、これをどのように変更すればよいですか?
UDP パケットを受信するたびに、その配列にデータを入れていると思います。これは、反復ごとにデータが消去される理由を説明しています。a を使用しByteArrayOutputStream
て、受信したバイトを保存します
ByteArrayOutputStream out = new ByteArrayOutputStream();
while (receiving) {
out.write(received_data, 0, received_data_size);
}
完了したら、次のようにして、受信したすべてのバイトを取得できます。
byte[] bytes = out.toByteArray();
そして、float
変換を行います
あなたが投稿した行は次のようになります。
float[] receive = new float[] {}
ループの中にあります。したがって、ループごとに、receive
変数は新しい空のfloat
配列を取得します。
の宣言はreceive
ループの外側に置く必要があります。そして、missingfaktorは正しいです、あなたはより良い使用しますArrayList
ArrayList<Float> receive;
...
receive.add(<your data>);
...
配列は固定サイズのデータ構造です。java.util.ArrayList
代わりに使用する必要があります。ボックス化のオーバーヘッドが許容できない場合は、ArrayList
整数に特化した独自のカスタムを作成するか、同様の利用可能なソリューションのいずれかを使用できます。