[发明专利]一种压缩和解压缩有序整数数组的方法有效
申请号: | 201710786051.5 | 申请日: | 2017-09-04 |
公开(公告)号: | CN110019184B | 公开(公告)日: | 2021-04-27 |
发明(设计)人: | 雷鹏 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 泰和泰律师事务所 51219 | 代理人: | 祝海燕 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 压缩 和解 有序 整数 数组 方法 | ||
1.一种数据压缩方法,包括:
数据提取步骤,用于从待压缩的有序数据中提取预定个数据记为一个数组array,并且计算所述数组中相邻两个数的差值diff作为数组差值,以及形成与所述数组对应的索引index和数据块block;
索引设置步骤,用于设置所述索引的索引条目,所述索引条目至少包括:用于记录所述数据块与第一数据块的相对位置的偏移量offset,和用于记录所述数组中的最小数据的最小值minval;
元数据设置步骤,用于根据所述差值设置所述数据块中的元数据部分,所述元数据至少包括:下阈值lowater和小位宽数据的位宽smallbits以用于确定所述数据块的数据压缩规则;以及
数据压缩步骤,用于根据所述元数据来压缩所述数组中的各个数据以生成压缩数值,并将所述压缩数值以小位宽数据和大位宽数据的形式储存在所述数据块中的数据部分的词中,其中,
如果diff[i]≥lowater且diff[i]≤hiwater,则将diff[i]-lowater或diff[i]-lowater+1作为小位宽数据,其中diff[i]表示所述数组差值中的第i个数据,lowater表示所述数据块的下阈值,hiwater表示所述数据块的上阈值;
如果不满足diff[i]≥lowater且diff[i]≤hiwater,则将diff[i]作为大位宽数据。
2.根据权利要求1所述的数据压缩方法,其中,所述元数据设置步骤进一步包括:在所述差值中的所有值均相等时,将下阈值设置为所述差值,并将所述小位宽数据的位宽设置为零。
3.根据权利要求2所述的数据压缩方法,其中,所述数据压缩步骤进一步包括:不在所述数据部分中储存压缩数值,继续执行所述数据提取步骤。
4.根据权利要求1所述的数据压缩方法,其中,所述元数据设置步骤进一步包括:在所述差值中的最大值和最小值相差为1时,将下阈值设置为所述差值中的最小值,并将所述小位宽数据的位宽设置为1比特。
5.根据权利要求4所述的数据压缩方法,其中,所述数据压缩步骤进一步包括:在所述数据部分的词中使用1比特表示一个压缩数值。
6.根据权利要求1所述的数据压缩方法,其中,所述元数据设置步骤进一步包括:在所述差值中的最大值和最小值相差为2或3时,将下阈值设置为所述差值中的最小值,并将所述小位宽数据的位宽设置为2比特。
7.根据权利要求6所述的数据压缩方法,其中,所述数据压缩步骤进一步包括:在所述数据部分的词中使用2比特表示一个压缩数值。
8.根据权利要求3、5、7中任一项所述的数据压缩方法,其中,所述数据压缩步骤包括:
在所述数据部分的词中用diff[i]-lowater表示每个压缩数值,其中diff[i]表示第i个数据对应的差值,lowater表示所述数据块的下阈值。
9.根据权利要求1所述的数据压缩方法,其中,所述元数据设置步骤进一步包括:
在所述差值中的最大值和最小值相差大于3时,动态地选择所述下阈值和小位宽数据的位宽。
10.根据权利要求9所述的数据压缩方法,其中,所述动态选择步骤进一步包括:
选择步骤,用于从所述差值中任选两个数值,
计算步骤,用于以所述被选中的两个数值为下阈值和上阈值,计算存储所述差值中所有整数需要的总比特数;以及
比较步骤,用于重复上述选择步骤和计算步骤,并且比较各个计算步骤的计算结果,其中最小的总比特数对应的两个数值作为最终的下阈值和上阈值,并记录对应的最终的小位宽数据的位宽。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710786051.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种大会投票计票管理系统
- 下一篇:一种基于知识图的智能教学诊断方法