数据压缩在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 是为了还原成正数

 

简单测试:

 代码:



结果:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值