我知道我可以encode numbers to a base like 65減小字符顯示(即使該數字是用二進制更小)的尺寸。使用更多字符將字符串編碼到另一個基地?
但是,有沒有辦法爲UTF-8文本到另一個基站編碼比我們的標準26個字母英文字母表多個字符?換句話說,我可以只用2個(即「6 $」)來創建一個表示或散列,而不是需要4個「字符」作爲單詞「four」。
我知道我可以encode numbers to a base like 65減小字符顯示(即使該數字是用二進制更小)的尺寸。使用更多字符將字符串編碼到另一個基地?
但是,有沒有辦法爲UTF-8文本到另一個基站編碼比我們的標準26個字母英文字母表多個字符?換句話說,我可以只用2個(即「6 $」)來創建一個表示或散列,而不是需要4個「字符」作爲單詞「four」。
相信Base64編碼的一點是,你可以輕鬆地將任何二進制數據轉換成「人類可讀的」字母和數字。它可以很容易地將任意數據轉錄到新聞組或通過基於文本的協議傳輸它們。
如果您想進一步「壓縮」這個數據,你需要找出你想要多少個字符允許。只有這麼多的8位組合。最有效率的方法是使用它們,在這種情況下爲什麼不使用gzip?
我會很樂意用gzip,如果有一些方式來表示人類可讀的方式的值(不解壓gzip壓縮的每一個值),也gzip的價值觀和別人比較。你可以看到一個例子,在上面鏈接的代碼中將數字4,023轉換爲「〜h」。 – Xeoncross
你的問題似乎與訂單0熵編碼: http://en.wikipedia.org/wiki/Entropy_encoding
最著名的算法是這樣的家庭是霍夫曼編碼: http://en.wikipedia.org/wiki/Huffman_coding
霍夫曼將只有64個字符使用不僅告訴你因此每個字符只需要6位:這也會影響頻繁字符(如空格)和罕見字符(如(;))之間的差異。然後它會創建一個代碼,其中頻繁字符使用的比特數少於少數比特,從而產生更好的壓縮效果(英文文本中每個字符通常爲4.5比特)。
霍夫曼編碼是一個全能壓縮技術,用作許多壓縮算法,包括拉鍊的一部分。 你可以找到它僅適用霍夫曼壓縮這裏(Huff0),它會幫助你確定有多少能獲得通過使用這種技術爲您的樣品輸入中的一個循環中的演示程序: http://fastcompression.blogspot.com/p/huff0-range0-entropy-coders.html
你是問是否一個任意四個字符的UTF8字符串可以用兩個字節無損地表示? – NPE
其實@aix,我問我是否可以壓縮一個任意的2-30個字符的字符串(一個字),所以它比我們的標準26字符字母表所需的空間要少。像壓縮或哈希可以創建一個值的代表。 – Xeoncross