我从simulink udp块接收我的数组(byte []数据)中的udp数据。数据打包为int32,所以首先我需要解压缩它。
我不知道如何保存这些数据才能使用它。这些数据是位置,我想使用OpenGL ES将它们可视化。 我想将数据保存到一个数组中,并能够在下一次迭代中将下一个数据包添加到该数组,而不是重写整个数组(因为循环)
现在数据的大小为1200 * 96。阵列是个不错的选择?
int j = 0 ;
float[] bin1 = new float[(data.length/2)];
while (j < data.length ) {
if ( data[2*j+2] >= 0 ) {
String unhx =(binary(data[2*j+3])+binary(data[2*j+2])+binary(data[2*j+1])+binary(data[2*j]));
float unbin = ((float)unbinary(unhx)/100);
bin1[j/2] = unbin;
print(bin1[1]);
}
else if ( data[2*j+2] < 0 && data[2*j+3] < 0 ) {
data[2*j] = (byte)(-data[2*j]);
data[2*j+1] = (byte)(-data[2*j+1]);
String unhx =(binary(data[2*j+1])+binary(data[2*j]));
float unbin = ((-1)*(float)unbinary(unhx)/100);
bin1[j/2] = unbin;
print(bin1[1]);
}
j = j + 2;
}
现在的问题是,每次新数据包到来时它都会重写整个bin1数组,我怎样才能将新数据包添加到bin1而不是重写整个数据包?
答案 0 :(得分:0)
我在这里看到的一个问题是在while
循环中你使用计数器作为变量int j=0
但是你没有增加可能是问题的计数器变量j
。
j = 0 ;
while (j < data.length){
float[] array = new float[] {myData};
j++;
}
答案 1 :(得分:0)
再次Melisa,你必须在进入while循环之前声明你的数组。因此,一旦离开循环,它们将保持在范围内。这意味着,在离开循环后,您仍然可以访问该阵列。 :)希望这有帮助。
答案 2 :(得分:0)
回复您编辑过的问题:
Melisa,您可能需要考虑使用浮动列表而不是浮点数组。 否则,您可能会发现自己正在调整数组并复制数组以添加更多数据。 列表/链表在理论上具有无限长度(你真的不必关心自己的长度),你可以继续添加浮点数。