The invention discloses a data compression block output method and device, which based on Deflate, the Deflate data compression method based on block output includes the remaining space in the vessel is below a threshold, determining the original buffer counter and static Huffman buffer of the upper limit of the remaining space size calculator; continue to add data to the remaining container space symbol in the overflow occurred in the buffer and Huffman buffer counter counter static moment or two after a according to the overflow time, determine the new compressed data blocks of time node; and compressed data blocks not overflow container in ensuring the maximum compression ratio, choose new data compression encoding output block. When the technical scheme of the invention can cut off output on the container boundary, try to put more contents in the current container, so as not to waste the current container space as much as possible, and improve the effective utilization of container space.
【技术实现步骤摘要】
基于Deflate的压缩数据块输出方法及装置
本专利技术涉及数据处理
,尤其涉及一种基于Deflate的压缩数据块输出方法及装置。
技术介绍
无损压缩算法是利用数据的统计冗余进行压缩,原始数据可完全恢复而不引起任何失真。由于不同数据的冗余程度不一,压缩后的数据长度是不一样的。目前,很多存储设备一般使用固定长度的存储空间来存储数据。我们统一把固定长度的存储空间称作容器。容器的长度在不同的存储设备中可以是不同,比如有的存储设备选择4K字节,有的选择1M字节。当原始数据压缩后比允许的容器长度更大的时候,能够在当前容器边界上截断输出,把后半部分原始数据存到下一个容器中去。Deflate压缩算法广泛应用于gzip,zlib文件格式中,是目前应用最广泛的无损压缩算法之一,经其压缩后的文件大小可以变长,如此造成压缩数据块的输出长度与容器的大小和边界不一致,容器的最后一部分可能是空白的,导致容器的空间利用率较低的问题。有鉴于此,有必要提出对目前的基于Deflate的固定长度压缩数据块输出方法进行进一步的改进。
技术实现思路
为解决上述至少一技术问题,本专利技术的主要目的是提供一种基于Deflate的压缩数据块输出方法。为实现上述目的,本专利技术采用的一个技术方案为:提供一种基于Deflate的压缩数据块输出方法,包括:在容器的剩余空间小于设定阈值时,确定当前压缩数据块的上限为剩余空间大小;继续向容器的剩余空间中添加符号数据,在原文缓冲计数器和静态Huffman缓冲计数器都发生溢出的时刻或根据两者中后一个发生溢出的时刻,确定产生新的压缩数据块的时间节点;以及在保证压缩数据 ...
【技术保护点】
一种基于Deflate的压缩数据块输出方法,其特征在于,所述基于Deflate的压缩数据块输出方法包括:在容器的剩余空间小于设定阈值时,确定当前压缩数据块的上限为剩余空间大小;继续向容器的剩余空间中添加符号数据,在原文缓冲计数器和静态Huffman缓冲计数器都发生溢出的时刻或根据两者中后一个发生溢出的时刻,确定产生新的压缩数据块的时间节点;以及在保证压缩数据块不溢出容器的前提下,选择压缩比最大的编码输出新的压缩数据块,所述编码为静态Huffman编码、动态Huffman编码以及原文件编码中任意一种。
【技术特征摘要】
1.一种基于Deflate的压缩数据块输出方法,其特征在于,所述基于Deflate的压缩数据块输出方法包括:在容器的剩余空间小于设定阈值时,确定当前压缩数据块的上限为剩余空间大小;继续向容器的剩余空间中添加符号数据,在原文缓冲计数器和静态Huffman缓冲计数器都发生溢出的时刻或根据两者中后一个发生溢出的时刻,确定产生新的压缩数据块的时间节点;以及在保证压缩数据块不溢出容器的前提下,选择压缩比最大的编码输出新的压缩数据块,所述编码为静态Huffman编码、动态Huffman编码以及原文件编码中任意一种。2.如权利要求1所述的基于Deflate的压缩数据块输出方法,其特征在于,所述确定当前压缩数据块的上限为剩余空间大小的步骤之前还包括:预先分配一统计容器中符号数据个数的原文缓冲计数器及静态Huffman缓冲计数器,其中,所述原文缓冲计数器及静态Huffman缓冲计数器的上限可调整。3.如权利要求1或2所述的基于Deflate的压缩数据块输出方法,其特征在于,所述选择压缩比最大的编码输出新的压缩数据块的步骤具体包括:选择静态Huffman编码与原文件编码中压缩比最大的编码输出新的压缩数据块。4.如权利要求1所述的基于Deflate的压缩数据块输出方法,其特征在于,所述选择压缩比最大的编码输出新的压缩数据块的步骤为:选择动态Huffman编码作为压缩比最大的编码输出新的压缩数据块,具体包括:如果动态Huffman编码小于容器的剩余空间,则得到一可继续添加符号数据的填充空间;如果动态Huffman编码等于容器的剩余空间,则以新的压缩数据块作为输出块;如果动态Huffman编码大于容器的剩余空间,则选取原文缓冲计数器和静态Huffman缓冲计数器中后溢出的那个所对应的编码作为输出块。5.如权利要求1或4所述的基于Deflate的压缩数据块输出方法,其特征在于,在所述容器得到一可继续添加符号数据的填充空间的步骤后,还包括:继续向容器的填充空间中添加符号数据,以最大压缩比编码输出填充块,其中,所述填充块为静态Huffman编码、动态Huffman编码以及...
【专利技术属性】
技术研发人员:张宇弘,王界兵,张伟,董迪马,耿涛,黄嘉乐,
申请(专利权)人:深圳前海信息技术有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。