public int ReadBinHex(byte [] buffer, int offset, int length)
{
if (offset < 0)
{
throw CreateArgumentOutOfRangeException("offset", offset, "Offset must be non-negative integer.");
}
else if (length < 0)
{
throw CreateArgumentOutOfRangeException("length", length, "Length must be non-negative integer.");
}
else 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 [] chars = new char [length * 2];
int charsLength = getter != null?
getter(chars, 0, length * 2) :
ReadValueChunk(chars, 0, length * 2);
return(XmlConvert.FromBinHexString(chars, offset, charsLength, buffer));
}