private ReadWireFormat ( byte src, int srcIndex ) : int | ||
src | byte | |
srcIndex | int | |
Résultat | int |
internal virtual int ReadWireFormat(byte[] src, int srcIndex)
{
byte[] tmp = new byte[ScopeOffset];
int length = 15;
for (int i = 0; i < 15; i++)
{
tmp[i] = unchecked((byte)(((src[srcIndex + (2 * i + 1)] & unchecked(0xFF))
- unchecked(0x41)) << 4));
tmp[i] |= unchecked((byte)(((src[srcIndex + (2 * i + 2)] & unchecked(0xFF)
) - unchecked(0x41)) & unchecked(0x0F)));
if (tmp[i] != unchecked((byte)' '))
{
length = i + 1;
}
}
try
{
name = Runtime.GetStringForBytes(tmp, 0, length, OemEncoding
);
}
catch (UnsupportedEncodingException)
{
}
HexCode = ((src[srcIndex + TypeOffset] & unchecked(0xFF)) - unchecked(0x41)) << 4;
HexCode |= ((src[srcIndex + TypeOffset + 1] & unchecked(0xFF)) - unchecked(
0x41)) & unchecked(0x0F);
return ScopeOffset + ReadScopeWireFormat(src, srcIndex + ScopeOffset);
}
internal virtual int ReadResourceRecordWireFormat(byte[] src, int srcIndex) { int start = srcIndex; int end; if ((src[srcIndex] & unchecked (0xC0)) == unchecked (0xC0)) { RecordName = QuestionName; // label string pointer to questionName srcIndex += 2; } else { srcIndex += RecordName.ReadWireFormat(src, srcIndex); } RecordType = ReadInt2(src, srcIndex); srcIndex += 2; RecordClass = ReadInt2(src, srcIndex); srcIndex += 2; Ttl = ReadInt4(src, srcIndex); srcIndex += 4; RDataLength = ReadInt2(src, srcIndex); srcIndex += 2; AddrEntry = new NbtAddress[RDataLength / 6]; end = srcIndex + RDataLength; for (AddrIndex = 0; srcIndex < end; AddrIndex++) { srcIndex += ReadRDataWireFormat(src, srcIndex); } return(srcIndex - start); }