Comment by titanomachy
10 years ago
Nice explanation. Can you explain how to remove ambiguity relating to string length?
"0" = 0.0b = 0 falls in the range [0,0.25) so it's a valid encoding for "A"; but isn't it also a valid encoding for "AA", "AAA", etc.?
AA = [0,0.25) * [0, 0.25) = [0, 0.125), and so on.
It seems that adding "A"s to a string in general doesn't change its encoding.
You either reserve a symbol for "end of stream" or externally store the length.
It's the equivalent to pretending a Huffman stream never ends and is padded with infinite 0s.