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