public int ReadBinHex(byte[] buffer, int offset, int length)
{
if (offset < 0)
{
throw XmlReaderBinarySupport.CreateArgumentOutOfRangeException("offset", offset, "Offset must be non-negative integer.");
}
if (length < 0)
{
throw XmlReaderBinarySupport.CreateArgumentOutOfRangeException("length", length, "Length must be non-negative integer.");
}
if (buffer.Length < offset + length)
{
throw new ArgumentOutOfRangeException("buffer length is smaller than the sum of offset and length.");
}
if (length == 0)
{
return(0);
}
char[] array = new char[length * 2];
int charLength = (this.getter == null) ? this.ReadValueChunk(array, 0, length * 2) : this.getter(array, 0, length * 2);
return(XmlConvert.FromBinHexString(array, offset, charLength, buffer));
}