我寫了一個簡單的文本文件壓縮器,使用霍夫曼編碼。我編碼文本並將由Huffman生成的二進制文件寫入文件。爲了解碼,我讀入二進制文件,並通過霍夫曼樹進行。霍夫曼編碼:處理消極的歧義與零
這部分很簡單。問題出現在0和負數之間。對於練習/趣味/學習,我決定做我自己的二進制轉換方法(從Java字節到字符串,反之亦然),並決定通過將最後一位翻轉爲1來表示負數。
例如,-2 = 00000101;
; 2 = 00000100
(額外的0進行填充,因爲即使是不必要的0的是霍夫曼重要......這是無關緊要的,雖然)
然而,0 = 00000000 = 00000001
這可能似乎不是一個問題,但是這兩個二進制串映射到哈夫曼樹中的兩個不同的字符。
是否有更好的方式處理二進制中的否定,將解決這個問題?
如果有人希望看到代碼:https://github.com/thomas4g/huffman-coding –