sizeOf function
Returns the minimum encoded size of the given unsigned long value.
@param value the unsigned long value (beware widening conversion of negatives!)
Implementation
int sizeOf(int value) {
// if negative, it's actually a very large unsigned long value
if (value < 0) return 9; // 1 marker + 8 data bytes
if (value < 253) return 1; // 1 data byte
if (value <= 0xFFFF) return 3; // 1 marker + 2 data bytes
if (value <= 0xFFFFFFFF) return 5; // 1 marker + 4 data bytes
return 9; // 1 marker + 8 data bytes
}