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