我有一個接收UDP數據包的數組的字節,我將它轉換爲浮點數組,問題是在每次迭代中清除數組並寫入接收到的數據包,同時我想添加新的數據包到數組!將udp數據保存到數組中
我用這個代碼:
float[] receive = new float[] {}
我應該如何改變這種增加接收包到我的陣列?
我有一個接收UDP數據包的數組的字節,我將它轉換爲浮點數組,問題是在每次迭代中清除數組並寫入接收到的數據包,同時我想添加新的數據包到數組!將udp數據保存到數組中
我用這個代碼:
float[] receive = new float[] {}
我應該如何改變這種增加接收包到我的陣列?
我假設每次接收到UDP數據包時,都會將數據放入該數組中,這就解釋了爲什麼每次迭代都會被擦除。 使用ByteArrayOutputStream
保存接收的字節
ByteArrayOutputStream out = new ByteArrayOutputStream();
while (receiving) {
out.write(received_data, 0, received_data_size);
}
一旦這樣做,你可以通過執行獲得所有接收的字節:
byte[] bytes = out.toByteArray();
然後做float
轉換
數組是固定大小的數據結構。您應該使用java.util.ArrayList
來代替。如果拳擊開銷不可接受,您可以編寫自己的專用於整數的自定義ArrayList
,或使用similar available solutions之一。
我會猜測,您發佈的帖子:
float [] receive = new float [] {}
位於循環內部。 所以每個循環receive
變量都會得到一個新的空float
數組。
您應該將receive
的聲明放在循環之外。 而missingfaktor是正確的,你最好使用ArrayList
ArrayList<Float> receive;
...
receive.add(<your data>);
...
我們需要看到更多的代碼確切地知道是什麼,你的陣列獲取每次迭代清理的原因。 –