2012-02-24 59 views
0

我通过一个字节数组试图回路(下面样品)读取的值,以然后在字节阵列读取空值

我环通过保持位置的轨道插入那些到数据库

byte[] data; 
    long position=0; 
    while (position < data.Length) 
    { 
     position = Conversion.Extract(data, out mydata, position); 
     position = Conversion.Extract(data, out nextitem, position); 
    } 

    public static long Extract(byte[] message, out int variable, long position) 
    { 
     const int length = 4; // the length of an int 

     if (message.Length >= position + length) 
     { 
      variable = BitConverter.ToInt32(message, (int)position); 
      return position + length; 
     } 

     // there was a problem 
     variable = 0; 
     return -1; 
    } 

我拥有的数据包含一些空值,我如何提取这些并成功移动到下一个值。目前,如果我遇到一个空值,我不知道如何检测这个并转到下一个项目。在所有

6F 72 67 61 6E 69 73 61 74 69 6F 6E 49 64 3D 33 
26 10 00 00 00 50 65 6F 70 6C 65 50 65 6F 70 6C 
65 4C 69 6E 6B 6A 08 00 00 09 00 00 00 0E 00 00 
00 53 65 6E 69 6F 72 50 65 72 73 6F 6E 49 64 0E 
00 00 00 4A 75 6E 69 6F 72 50 65 72 73 6F 6E 49 
64 11 00 00 00 53 65 6E 69 6F 72 50 65 72 73 6F 
6E 4D 69 73 49 64 11 00 00 00 4A 75 6E 69 6F 72 
50 65 72 73 6F 6E 4D 69 73 49 64 08 00 00 00 4C 
69 6E 6B 54 79 70 65 16 00 00 00 50 61 72 65 6E 
74 61 6C 52 65 73 70 6F 6E 73 69 62 69 6C 69 74 
79 08 00 00 00 50 72 69 6F 72 69 74 79 0B 00 00 
00 4C 61 73 74 55 70 64 61 74 65 64 07 00 00 00 
44 65 6C 65 74 65 64 01 00 00 00 D7 0A 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 01 80 C3 29 
C6 85 BF CE 08 00 02 00 00 00 3C 0C 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 F0 83 76 C6 
85 BF CE 08 00 03 00 00 00 3C 0C 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 C0 0E 76 C6 85 
BF CE 08 00 04 00 00 00 67 0B 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 01 70 CA 4B C6 85 BF 
CE 08 00 05 00 00 00 67 0B 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 02 70 CA 4B C6 85 BF CE 
08 00 06 00 00 00 9B 08 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 02 C0 BE B2 C5 85 BF CE 08 
00 06 00 00 00 AD 09 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 02 10 6D F5 C5 85 BF CE 08 00 
06 00 00 00 3F 0A 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 02 80 59 11 C6 85 BF CE 08 00 07 
00 00 00 E3 0A 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 01 C0 D0 2C C6 85 BF CE 08 00 08 00 
00 00 9B 08 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 01 C0 BE B2 C5 85 BF CE 08 00 08 00 00 
00 AD 09 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 01 10 6D F5 C5 85 BF CE 08 00 08 00 00 00 
C9 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 01 20 76 FA C5 85 BF CE 08 00 08 00 00 00 3F 
0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
01 B0 CE 11 C6 85 BF CE 08 00 09 00 00 00 E3 0A 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 
90 5B 2C C6 85 BF CE 08 00 0A 00 00 00 C9 09 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 20 
76 FA C5 85 BF CE 08 00 0B 00 00 00 F6 08 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 01 E0 C9 
D2 C5 85 BF CE 08 00 0C 00 00 00 F6 08 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 02 F0 2C C9 
C5 85 BF CE 08 00 0E 00 00 00 91 09 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 01 C0 C7 EF C5 
85 BF CE 08 00 0F 00 00 00 91 09 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 02 90 52 EF C5 85
SeniorPersonId | JuniorPersonId | SeniorPersonMisId | JuniorPersonMisId | LinkType | ParentalResponsibility | Priority | LastUpdated    Deleted 
1    | 2775   | {null}   | {null}   | {null} | 0      | 1  | 2012-02-22 14:31:18.200 | {null} 
2    | 3132   | {null}   | {null}   | {null} | 0      | {null} | 2012-02-22 14:31:18.703 | {null} 
3    | 3132   | {null}   | {null}   | {null} | 0      | {null} | 2012-02-22 14:31:18.700 | {null} 
4    | 2919   | {null}   | {null}   | {null} | 0      | 1  | 2012-02-22 14:31:18.423 | {null}
+1

数据阵列什么在?数据来自哪里?什么对你没有意义? – BlueM 2012-02-24 12:55:31

+0

您的转换代码完全不符合数据。它清楚地包含了字符串和整数的组合。十六进制的第一行是“organisationId = 3”。您需要了解更多关于数据结构的方式。 – 2012-02-24 13:51:41

回答

0

谁能帮助如果与空值你的意思是一个空字节那么这应该工作:

bool HasNullByteInside(Int32 n) 
{ 
    return (n & 0xff000000 == 0) || 
      (n & 0x00ff0000 == 0) || 
      (n & 0x0000ff00 == 0) || 
      (n & 0x000000ff == 0); 
}