我有一个折磨了好几个小时的问题。我需要能够找到数组中的第一个非零值(考虑到之后可能有零)。如何检测二进制文件中的非零值?
所以,如果:
A [0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 48, 24, 0, 0, 18, 9, 9, 7, 8, 0];
如何设置一个变量说,INT起源;等于9,使得A [原点] = 16?
我的实际问题比这个更复杂,但这实质上是我坚持的简化版本。实际上,我使用的蓝牙设备可以输出512字节的扇区,但是该扇区中的每个字节都表示不同的内容。所以我做了一个for循环来提取我感兴趣的字节数224,然后我为每个扇区创建了一个数值224。尽管扇区中的所有其他字节都包含数据,但该特定字节直到很晚才开始传输。由于我想分析数据,我需要知道哪些部门开始有用。因此,我有上面的问题。所有这些信息与问题完全无关,但我已经提供了它的背景。我需要输出字节数224作为“纬度”,字节数225输出为“longuitude”,字节226输出为“海拔”(对于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。
我很困惑 - 只是把它看作是二进制的,要么全部(如果很小),要么通过Stream.Read(如果较大),并检查零...也许使用一个不安全的字节*/int *黑客如果你需要优化。究竟是什么问题? –
马克有你的解决方案,但是对于你的经度和纬度问题,一个字节是不够的信息保存这些值。我认为你正在解释错误的数据格式。 (例如-60.5不能用一个字节表示(一个字节不能做小数或负数),并且可以用605表示(255是你可以拥有的最高数字)) –
@Marc:我知道,你们都是对。我实际上有4个字节的lat,lon和elevation。而且它们实际上是浮点数组。我使用FileStream和BinaryReader将文件作为字节数组导入。然后使用:temp [0] = Trama [127]; temp [1] = Trama [126]; temp [2] = Trama [125]; temp [3] = Trama [124]; // 相反的顺序。 float p = BitConverter.ToSingle(temp,0);转换为浮动。但我简化了这个问题,因为这是我不理解的概念。但是你是对的,我应该从一开始就更清楚。但非常感谢! –