private static string ConvertToBase8 (byte[] value)
{
ulong l = 0;
switch (value.Length) {
case 1:
l = (ulong) value [0];
break;
case 2:
l = (ulong) BitConverter.ToUInt16 (value, 0);
break;
case 4:
l = (ulong) BitConverter.ToUInt32 (value, 0);
break;
case 8:
l = BitConverter.ToUInt64 (value, 0);
break;
default:
throw new ArgumentException ("value");
}
StringBuilder sb = new StringBuilder ();
for (int i = 21; i >= 0; i--) {
// 3 bits at the time
char val = (char) ((l >> i * 3) & 0x7);
if ((val != 0) || (sb.Length > 0)) {
val += '0';
sb.Append (val);
}
}
return sb.ToString ();
}