public static string ToString(byte[] value, int startIndex, int length)
{
if (value == null)
{
throw new ArgumentNullException("value");
}
if (startIndex < 0 || (startIndex >= value.Length && startIndex > 0))
{
throw new ArgumentOutOfRangeException("startIndex", Environment.GetResourceString("ArgumentOutOfRange_StartIndex"));
}
if (length < 0)
{
throw new ArgumentOutOfRangeException("length", Environment.GetResourceString("ArgumentOutOfRange_GenericPositive"));
}
if (startIndex > value.Length - length)
{
throw new ArgumentException(Environment.GetResourceString("Arg_ArrayPlusOffTooSmall"));
}
if (length == 0)
{
return(string.Empty);
}
if (length > 715827882)
{
throw new ArgumentOutOfRangeException("length", Environment.GetResourceString("ArgumentOutOfRange_LengthTooLarge", new object[]
{
715827882
}));
}
int num = length * 3;
char[] array = new char[num];
int num2 = startIndex;
for (int i = 0; i < num; i += 3)
{
byte b = value[num2++];
array[i] = BitConverter.GetHexValue((int)(b / 16));
array[i + 1] = BitConverter.GetHexValue((int)(b % 16));
array[i + 2] = '-';
}
return(new string(array, 0, array.Length - 1));
}