2012-02-24 35 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); 
}