Я написал простой компрессор текстовых файлов, использующий кодирование Хаффмана. Я кодирую текст и записываю двоичный файл, полученный в результате Хаффмана, в файл. Для декодирования я читаю двоичный код и прохожу по дереву Хаффмана.
Эта часть проста. Проблема возникает с 0 и отрицательными числами. Для практики/развлечения/обучения я решил использовать свои собственные методы двоичного преобразования (из байта Java в строку и наоборот) и решил представить отрицательные числа, изменив последний бит на 1.
Например, -2 = 00000101;
; 2 = 00000100
(дополнительные 0 для заполнения, поскольку даже ненужные 0 важны в Хаффмане... хотя это не имеет значения)
Однако 0 = 00000000 = 00000001
Это может не показаться проблемой, но эти две двоичные строки сопоставляются с двумя разными символами в дереве Хаффмана.
Есть ли лучший способ обработки негативов в двоичном формате, который обойдет это?