Levenshtein coding
Levenshtein coding is a universal code encoding the non-negative integers developed by Vladimir Levenshtein.
Encoding
The code of zero is "0"; to code a positive number:- Initialize the step count variable C to 1.
- Write the binary representation of the number without the leading "1" to the beginning of the code.
- Let M be the number of bits written in step 2.
- If M is not 0, increment C, repeat from step 2 with M as the new number.
- Write C "1" bits and a "0" to the beginning of the code.
To decode a Levenshtein-coded integer:
- Count the number of "1" bits until a "0" is encountered.
- If the count is zero, the value is zero, otherwise
- Discard the "1" bits just counted and the first "0" encountered
- Start with a variable N, set it to a value of 1 and repeat count minus 1 times:
- Read N bits, prepend "1", assign the resulting value to N
Example code
Encoding
void levenshteinEncode
Decoding
void levenshteinDecode