public static ulong ToUInt64(char[] hexBuffer, int offset)
{
const int maxLength = 16;
if (hexBuffer == null) throw new ArgumentNullException("hexBuffer");
if (offset < 0) throw new ArgumentOutOfRangeException("offset");
if (offset + 1 > hexBuffer.Length) throw new ArgumentOutOfRangeException("offset");
var end = Math.Min(hexBuffer.Length, offset + maxLength);
var result = 0ul;
for (var i = 0; offset < end; offset++, i++)
{
var hexChar = hexBuffer[offset];
var hexNum = ToHexNum(hexChar);
if (i % 2 == 1)
result |= hexNum << (i - 1) * 4;
else
result |= hexNum << (i + 1) * 4;
}
return result;
}
public static ulong ToUInt64(string hexString, int offset)