2012-02-24 2 views
0

それからレディングのNULL値は、

Iループの位置を追跡することを介してデータベースにそれらを挿入する値を読み出す(以下サンプル)バイト配列をループしようとしてい

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; 
    } 

私はいくつかのnull値が含まれているデータは、どのようにこれらを抽出し、次の値に正常に移動することができます。現在、私がnull値を見つけた場合、これを検出して次の項目に移動する方法はわかりません。あなたがNULLバイトを意味するNULL値を持つ場合は、誰もがすべての

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

+0

あなたのコンバージョンコードは単にデータと一致しません。はっきりと文字列と整数が混在しています。 hexの最初の行は "organisationId = 3"です。データがどのように構成されているかについては、さらに詳しく調べる必要があります。 –

答えて

0

で助けることができ、これは動作するはずです:

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