2012-06-08 151 views
0

我有一个接收UDP数据包的数组的字节,我将它转换为浮点数组,问题是在每次迭代中清除数组并写入接收到的数据包,同时我想添加新的数据包到数组!将udp数据保存到数组中

我用这个代码:

float[] receive = new float[] {} 

我应该如何改变这种增加接收包到我的阵列?

+1

我们需要看到更多的代码确切地知道是什么,你的阵列获取每次迭代清理的原因。 –

回答

1

我假设每次接收到UDP数据包时,都会将数据放入该数组中,这就解释了为什么每次迭代都会被擦除。 使用ByteArrayOutputStream保存接收的字节

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
while (receiving) { 
    out.write(received_data, 0, received_data_size); 
} 

一旦这样做,你可以通过执行获得所有接收的字节:

byte[] bytes = out.toByteArray(); 

然后做float转换

0

数组是固定大小的数据结构。您应该使用java.util.ArrayList来代替。如果拳击开销不可接受,您可以编写自己的专用于整数的自定义ArrayList,或使用similar available solutions之一。

0

我会猜测,您发布的帖子:

float [] receive = new float [] {}

位于循环内部。 所以每个循环receive变量都会得到一个新的空float数组。

您应该将receive的声明放在循环之外。 而missingfaktor是正确的,你最好使用ArrayList

ArrayList<Float> receive; 
... 
receive.add(<your data>); 
...