1. 程式人生 > >資料壓縮在tokyo cabinet中的應用解析

資料壓縮在tokyo cabinet中的應用解析

一個int型別整數在計算機內由4個位元組儲存,表示的範圍是0~2^32,而實際上,如果一個系統中,用到的整數的範圍都比較小,高位補0的那些位元組是否有些浪費了?比如int型整數128,它在計算機內的儲存為0000 0000 0000 0000 0000 0000 1000 0000,有三個位元組是補的0。怎麼樣來對這樣的資料進行壓縮儲存了? 壓縮之後,又怎麼來進行讀取了?  來看下tokyo cabinet中是怎麼樣處理的: 它取出整數中的有效位元組儲存在目標位元組序列裡. 例如:int型整數128,有效位元組為最後一個位元組1000 0000, 先取後7位值, 將其變為負數,儲存到目標位元組序列裡, 然後將1000 0000 右移7位,重複以上操作.於是int型整數128的實際儲存就只需要2 bytes空間. 完整實現程式碼如下: 1。壓縮儲存整數


注意:-TC_rem -1 操作是為了將正數變為負數(因為有可能存在0)

 2。讀取壓縮後的整數


注意:(TC_buf[_TC_i] + 1) * -1 是為了還原成正數

簡單測試:

 程式碼:


結果: