【发布时间】:2012-06-08 21:53:41
【问题描述】:
我有一个接收 UDP 数据包的数组字节并将其转换为浮点数组,问题是在每次迭代中它都会清除数组并写入接收到的数据包,而我想将新数据包添加到数组中!
我使用这个代码:
float[] receive = new float[] {}
我应该如何更改它以将接收数据包添加到我的阵列?
【问题讨论】:
-
我们需要查看更多代码来了解您的数组在每次迭代中被清除的确切原因。
我有一个接收 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[] 接收 = 新的 float[] {}
在循环内。
所以每个循环receive 变量都会得到一个新的空float 数组。
您应该将receive 的声明放在循环之外。
而且missingfaktor是对的,你最好用ArrayList
ArrayList<Float> receive;
...
receive.add(<your data>);
...
【讨论】: