我有一个接收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>);
...
我们需要看到更多的代码确切地知道是什么,你的阵列获取每次迭代清理的原因。 –