C# 读取字节数组中的空值

C# 读取字节数组中的空值,c#,C#,我试图循环通过字节数组(下面的示例)读取值,然后将这些值插入数据库 我通过循环跟踪位置 byte[] data; long position=0; while (position < data.Length) { position = Conversion.Extract(data, out mydata, position); position = Conversion.Extract(data, out nextitem,

我试图循环通过字节数组(下面的示例)读取值,然后将这些值插入数据库

我通过循环跟踪位置

    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;
    }
byte[]数据;
长位置=0;
while(位置<数据长度)
{
位置=转换。提取(数据、输出数据、位置);
位置=转换。提取(数据,输出下一个项,位置);
}
公共静态长提取(字节[]消息,out int变量,长位置)
{
const int length=4;//整数的长度
如果(message.Length>=位置+长度)
{
变量=位转换器.ToInt32(消息,(int)位置);
返回位置+长度;
}
//有个问题
变量=0;
返回-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 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 09 00 00 0E 00 00 00 53 65 6E 69 6F 72 50 65 72 73 6F 6E 49 64 0E 00 00 4A 75 6E 69 6F 72 50 65 72 73 6F 6E 49 64 11 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 506572736F6E4D6973496408004C 69 6E 6B 54 79 70 65 16 00 00 50 61 72 65 6E 74 61 6C 52 65 73 70 6F 6E 73 62 69 6C 69 74 79 08 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 44 65 6C 65 74 65 64 01 00 00 D7 0A 00 00 00 00 00 00 00 01 80 C3 29 C6 85 BF CE 08 00 02 00 00 3C 0C 00 00 00 00 00 00 00 F0 83 76 C6 85 BF CE 08 00 03 00 3C 0C 00 00 00 00 00 00 00 00 C0 0E 76 C6 85 BF CE 08 00 04 00 00 67 0B 00 00 00 00 00 00 01 70 CA 4B C6 85高炉 CE 08 00 05 00 00 67 0B 00 00 00 00 00 02 70 CA 4B C6 85 BF CE 08 00 06 00 00 9B 08 00 00 00 00 00 00 00 02 C0 BE B2 C5 85 BF CE 08 00 06 00 00 AD 09 00 00 00 00 00 00 00 00 02 10 6D F5 C5 85 BF CE 08 00 06 00 00 3楼0A 00 00 00 00 00 00 00 02 80 59 11 C6 85 BF CE 08 00 07 00 00 E3 0A 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 01 C0 BE B2 C5 85 BF CE 08 00 08 00 00 00广告09 00 00 00 00 00 00 00 00 00 00 00 01 10 6D F5 C5 85 BF CE 08 00 08 00 00 C9 09 00 00 00 00 00 00 00 00 00 00 00 01 20 76 FA C5 85 BF CE 08 00 08 00 3F 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 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 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 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 F6 08 00 00 00 00 00 00 00 00 01 E0 C9 D2 C5 85高炉CE 08 00 0C 00 00 F6 08 00 00 00 00 00 00 00 02 F0 2C C9 C5 85 BF CE 08 00 0E 00 00 91 09 00 00 00 00 00 00 00 00 00 01 C0 C7 EF C5 85 BF CE 08 00 00 00 91 09 00 00 00 00 00 00 00 00 02 90 52 EF C5 85 SeniorPersonId | JuniorPersonId | SeniorPersonMiId | JuniorPersonMiId |链接类型|家长责任|优先级|上次更新已删除 1 | 2775 |{null}|{null}|{null}| 0 | 1 | 2012-02-22 14:31:18.200 |{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}如果使用null值表示空字节,那么这应该可以工作:

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

数据数组中有什么?数据来自哪里?什么是空值?您的转换代码与数据完全不匹配。它显然包含字符串和整数的混合。十六进制的第一行是“OrganizationID=3”。您需要进一步了解数据的结构方式。
bool HasNullByteInside(Int32 n)
{
    return (n & 0xff000000 == 0) ||
           (n & 0x00ff0000 == 0) ||
           (n & 0x0000ff00 == 0) ||
           (n & 0x000000ff == 0);
}