我正在尝试循环读取值的字节数组(下面的示例),然后将这些值插入数据库
我循环跟踪位置
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}
答案 0 :(得分:0)
如果使用null值表示空字节,那么这应该起作用:
bool HasNullByteInside(Int32 n)
{
return (n & 0xff000000 == 0) ||
(n & 0x00ff0000 == 0) ||
(n & 0x0000ff00 == 0) ||
(n & 0x000000ff == 0);
}