public static byte[] ToBuffer(string hexString, int offset, int count)
{
if (hexString == null) throw new ArgumentNullException("hexString");
if (offset < 0) throw new ArgumentOutOfRangeException("offset");
if (count < 0) throw new ArgumentOutOfRangeException("count");
if (offset + count > hexString.Length) throw new ArgumentOutOfRangeException("count");
var buffer = new byte[(hexString.Length + 1) / 2];
var bufferOffset = 0;
var end = offset + count;
for (; offset < end; offset += 2, bufferOffset++)
buffer[bufferOffset] = ToUInt8(hexString, offset);
return buffer;
}