整數壓縮演算法

2021-07-02 05:45:20 字數 947 閱讀 1967

1 0~255的整數可以只用乙個位元組表示,256~65535的資料只需2個位元組,65536~16777215需要3個位元組,16777216以上4個位元組

int uncompressed =
byte compressed =

encode integers:

int outpos = 0, previous = 0;

for (int inpos = 0; inpos < n; inpos++)

compressed[outpos++] = delta;

}decode integers:

int outpos = 0, previous = 0;

for (int outpos = 0; outpos < n; outpos++)

uncompressed[outpos] = previous;

}

2 行程壓縮演算法 or(

遊程長度壓縮演算法

) rle(run length encoding)

這裡需要補充的是在傳統的rle演算法裡,並沒有考慮到連續遞增或遞減的資料序列,例如:2,3,4,5,6,8,9,10,11。2,3,4,5,6是乙個增序列,9,10,11,12也是乙個增序列,對應這種序列,我們可以新增乙個自己的模式來處理它。例如:00b表示連續相同的數字序列, 01b表示連續遞增的數字序列,那麼可以用(01000101)b表示遞增序列的長度為5.

3 pfordelta索引壓縮演算法

4 newpfordelta演算法

5 variable byte / code 演算法

6 lzma演算法,(lempel-ziv-markov chain-algorithm 的縮寫)

7 deflate壓縮演算法,是同時使用了lz77演算法與哈夫曼編碼(huffman coding)的乙個無損資料壓縮

演算法

FOR壓縮演算法

倒排表的壓縮演算法 for rbm 詞項索引的檢索原理 fst 如上圖,假設倒排表中最理想的一行id為1,2,3.100 w個連續數字 圖 若沒有使用for壓縮演算法,則有100w個int型別的數字,1數字 4位元組,則有400w位元組,約佔4m儲存空間。1位元組 8bit,則1int需要32bit...

備忘錄 壓縮整數及其解壓縮

原創 anders liu 本文已過時,請參見 net cli元資料中使用的壓縮整數 摘要 net cli的pe檔案中廣泛採用了一種整數壓縮演算法,這種演算法可以將乙個32位無符號整數根據其大小放置在1 2或4個位元組中。本文介紹了這種壓縮演算法,並給出了解壓縮的參考實現。ecma 335 comm...

zigzag壓縮演算法

前文 base 128 varints 編碼 壓縮演算法 介紹了base 128 varints這種對數字傳輸的編碼,了解到了這種編碼方式是為了最大程度壓縮數字的。但是,在前文裡,我們只談論到了正數的情況,那如果出現了負數,該怎麼辦?zigzag壓縮演算法解決的就是這個問題。在聊這個演算法之前,我們...