我有一个折磨了好几个小时的问题。我需要能够在数组中找到第一个非零值(考虑到之后可能有零)。
所以如果:
A [0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 48, 24, 0, 0, 18, 9, 9, 7, 8, 0];
如何设置变量say,int origin;等于9,这样A [origin] = 16?
我的实际问题比这更复杂,但这本质上是让我陷入困境的简化版本。我实际上正在使用输出512字节扇区的蓝牙设备,但该扇区中的每个字节代表不同的东西。所以我做了一个for循环来提取我感兴趣的字节编号224,然后我为每个扇区创建了一个值为224的数组。尽管扇区中的所有其他字节都包含数据,但该特定字节直到很久之后才开始发送。因为我想分析我需要知道哪个部门开始有用的数据。因此,我有上述问题。所有这些信息与问题完全无关,但我已将其作为背景提供。
此外,如果你真的想要给自己一个答案,我需要输出字节数224作为“纬度”,字节数225输出为“longuitude”,字节226输出为“elevation”(对于GPS)一种xml格式。关于如何将我的三字节数组输出为xml格式的任何想法?我已经读过它们必须先是字符串形式,但这很容易:
string [] Lat = new string [Sectors];
for (int i = 0, i < sectors; i++)
{
Lat[i] = A[i].ToString();
}
最后,我喜欢这样的结果。
<document>
<point lat = "50.0" lon = "-60.5" ele = "605">
<time> 16:54:08 </time>
</point>
<point .... etc
</document>
我希望我能给你足够的信息,我会帮助你提供任何帮助。大家欢呼!顺便说一句,所有代码都应该在c#中,我使用visual c#2010 express。
答案 0 :(得分:4)
你在问题中陈述了“数组”,这使得它更容易:
int index = -1;
for(int i = 0 ; i < arr.Length ; i++)
{
if(arr[i] != 0)
{
index = i;
break;
}
}
现在如果index是非负的,那么它是第一个非零的索引。然后是arr [index]。
如果你需要从FileStream读取只是循环读取并重复。如果需要,可以使用不安全的代码进行黑客攻击,以便稍微加快。