static StringBuilder ConvertToBase16 (byte[] value)
{
if (!BitConverter.IsLittleEndian)
EndianSwap (ref value);
StringBuilder sb = new StringBuilder ();
for (int i = value.Length - 1; i >= 0; i--) {
char high = (char)((value[i] >> 4) & 0x0f);
if ((high != 0) || (sb.Length > 0)) {
if (high < 10)
high += '0';
else {
high -= (char) 10;
high += 'a';
}
sb.Append (high);
}
char low = (char)(value[i] & 0x0f);
if ((low != 0) || (sb.Length > 0)) {
if (low < 10)
low += '0';
else {
low -= (char) 10;
low += 'a';
}
sb.Append (low);
}
}
return sb;
}