public static int GetMultiByteLongLength(ulong value)
{
var size = 1;
if((value & 0x8000000000000000UL) != 0) // most significant 1 bits
size++;
if((value & 0xFF00000000000000UL) != 0) // most significant 8 bits
size++;
if((value & 0xFFFE000000000000UL) != 0) // most significant 15 bits
size++;
if((value & 0xFFFFFC0000000000UL) != 0) // most significant 22 bits
size++;
if((value & 0xFFFFFFF800000000UL) != 0) // most significant 29 bits
size++;
if((value & 0xFFFFFFFFF0000000UL) != 0) // most significant 36 bits
size++;
if((value & 0xFFFFFFFFFFE00000UL) != 0) // most significant 43 bits
size++;
if((value & 0xFFFFFFFFFFFFC000UL) != 0) // most significant 50 bits
size++;
if((value & 0xFFFFFFFFFFFFFF80UL) != 0) // most significant 57 bits
size++;
return size;
}