huffman-code

    0熱度

    1回答

    我想通過java實現流行的哈夫曼代碼算法與二維數組。 這個想法是創建這個二維數組,將輸入的概率排序並插入數組的第一行,然後每一行後面的第一個元素將是前一行中前兩個元素的總和。 然後在轉到下一行之前對當前行進行排序。 不幸的是有一個奇怪的輸出,我看到與二維數組中的單個行的排序。這是代碼。 import java.util.Scanner; public class SolaihtheHuf

    4熱度

    1回答

    我想寫一個算法來執行霍夫曼解碼。我在Scala中完成它 - 這是Coursera課程的一個任務,我不想違反榮譽代碼,所以下面是僞代碼而不是Scala。 我寫的算法需要樹tree和位列表bits,並且應該返回消息。但是,當我在提供的樹上嘗試它時,我得到一個NoSuchElementException(空列表的頭)。我看不出爲什麼。 我知道我的代碼可以整理一下 - 我對函數式編程還是很新的,所以我用一

    1熱度

    1回答

    我有一些文本文件(純ASCII),我想用霍夫曼編碼壓縮它們,因爲壓縮文件將用於有限的資源硬件中,所以解壓縮操作必須儘可能簡化。 所以我想從我的文本文件創建一個霍夫曼表,並用它壓縮文件,並將壓縮文件和我的解壓縮程序(使用默認霍夫曼表)複製到我的LR硬件中。 我認爲,假設霍夫曼表已經足夠管理我所有的文本文件,因爲它們都具有類似的內容。 由於使用默認的霍夫曼表不準確導致壓縮文件變得比它們可能大一些,與動

    2熱度

    1回答

    對於我的項目,我必須使用霍夫曼算法壓縮文件。我想出了大部分部分,但是我很難處理其他ASCII字符,如換行符,製表符等。這是我迄今爲止所做的,但是在處理文件時我無法獲得其他字符創建。 import operator def getFreq(mylst): dct = {'a':0,'b':0,'c':0,'d':0,'e':0,'f':0,'g':0,'h':0,'i':0,'j':0

    1熱度

    2回答

    我正在使用霍夫曼編碼和解碼算法在python中創建一個壓縮項目。我必須創建一個尺寸更小的文件。我正在使用從霍夫曼樹中得到的字節值,並將它們作爲字符串文字(如'0100101')寫入文件中,我想將其轉換爲相同的數字,以便將其存儲爲二進制數字。

    2熱度

    1回答

    我能夠壓縮各種文件(.jpg,.mp4等),但當我嘗試解壓縮這些非文本文件時程序只是返回一個空的解壓文件......奇怪的是我能夠解壓純文本文件就好了。 當我壓縮我的原始文件時,我把重建樹和編碼位所需的數據放在同一個文件中。格式看起來是這樣的: <n><value 1><frequency 1>...<value n><frequency n>[the compressed bytes] 其中

    0熱度

    1回答

    如果霍夫曼碼是prefix code爲什麼JPEG的DC和AC係數被編碼爲[長度] [位]對?爲什麼我們需要長度前綴? 爲什麼我們編碼值的長度而不是自己的值(糾正我,如果我錯了)?

    0熱度

    1回答

    嗨,我只是想知道是否有可能設置gzip輸出流中使用的deflater使用HUFFMAN_ONLY,我有它與我自己的deflate方法。 public static byte[] deflate(byte[] data) throws IOException { Deflater deflater = new Deflater(); deflater.setInput(data)

    0熱度

    1回答

    我的問題是具體的。我可以看到霍夫曼編碼理論很容易理解。但是,它似乎創建通常不與字節邊界對齊的代碼。減輕這個特定問題的實用方法並沒有在我所遇到的教程中討論過。 有兩個問題: (1)一旦一個文件被編碼,文件的生成的霍夫曼碼文件的結束可能不會在字節邊界對齊。我們如何知道我們已經在壓縮文件中結束了哈夫曼編碼數據? (2)假如文件中包含一個huffman表來幫助解壓縮,那麼在實際中如何創建這樣一個表,因爲我

    0熱度

    1回答

    霍夫曼和算術編碼數據用於熵編碼的許多不同的壓縮程序中。他們爲要壓縮的符號創建一個新的編碼,該編碼可能不與字節邊界對齊。這意味着,當數據必須被解壓縮時,它必須被逐位讀取。但是,這似乎是非常非常緩慢的過程。 霍夫曼和算術編碼數據解壓縮如何加速?我們是否像CRC計算一樣創建了某種表格,這使我們能夠讀取每個字節的數據,然後對符號進行解碼,或者它總是以每位爲基礎進行真正的讀取?