CN105337617B - 一种fsn文件高效压缩方法 - Google Patents

一种fsn文件高效压缩方法 Download PDF

Info

Publication number
CN105337617B
CN105337617B CN201510908590.2A CN201510908590A CN105337617B CN 105337617 B CN105337617 B CN 105337617B CN 201510908590 A CN201510908590 A CN 201510908590A CN 105337617 B CN105337617 B CN 105337617B
Authority
CN
China
Prior art keywords
byte
compression
new
value
fsn
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510908590.2A
Other languages
English (en)
Other versions
CN105337617A (zh
Inventor
魏伟
陈祥献
虞华锋
商茎正
陈小勇
陈金栋
冯国平
程露露
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Polytron Technologies Inc
Original Assignee
Zhejiang Weirong Electronic Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang Weirong Electronic Co Ltd filed Critical Zhejiang Weirong Electronic Co Ltd
Priority to CN201510908590.2A priority Critical patent/CN105337617B/zh
Publication of CN105337617A publication Critical patent/CN105337617A/zh
Application granted granted Critical
Publication of CN105337617B publication Critical patent/CN105337617B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种FSN文件高效压缩方法,通过设备生成的FSN文件以字节流的方式经过特定的无损压缩处理而得到的一种高效的压缩方法。采用本发明方法,可以使设备生成的FSN文件压缩成一定比例后再通过FTP进行上传。这种压缩方法大大减轻了设备端的处理压力,在网络传输过程中降低了传输流量,大大提升了文件上传速度和文件上传量,降低带宽要求和减少网络压力。

Description

一种FSN文件高效压缩方法
技术领域
本发明涉及一种在文件传输时通过读取字节流来进行压缩的技术,具体涉及一种对字节流二进制串进行特定算法规则的压缩方法,属于压缩技术领域。
背景技术
数据压缩是一项涉及通信原理和计算机科学的尖端技术,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据压缩,两者本质上没什么区别,都是映射。
一方面在进行通信的时候,有必要将待传输的数据进行压缩,以减少带宽需求;另一方面,计算机存储数据的时候,为了减少磁盘容量需求,也会将文件进行压缩,尽管现在的网络带宽越来越高,压缩已经不像90年代初那个时候那么迫切,但在很多场合下仍然需要,其中一个原因是压缩后的数据容量减小后,磁盘访问IO的时间也缩短,尽管压缩和解压缩过程会消耗CPU资源,但是CPU计算资源增长得很快,但是磁盘IO资源却变化得很慢,比如目前主流的SATA硬盘仍然是7200转,如果把磁盘的IO压力转化到CPU上,总体上能够提升系统运行速度。
压缩可以分为无损压缩和有损压缩,有损,指的是压缩之后就无法完整还原原始信息,但是压缩率可以很高,主要应用于视频、话音等数据的压缩,因为损失了一点信息,人是很难察觉的,或者说,也没必要那么清晰照样可以看可以听;无损压缩则用于文件等等必须完整还原信息的场合,本发明自然就是一种无损压缩,在通信原理中介绍数据压缩的时候,往往是从信息论的角度出发,这里换一种思路,从最原始的思想出发,为了达到压缩的目的,需要怎么去设计算法。
发明内容
本发明所要解决的技术问题在于提供一种高效压缩方法,使得计算复杂度和内存消耗变得很小,从而再解压缩时也变得更为简单方便。
每个文件都由各种不同代码组成,比如01代码。这类文件只有数字0与1组合。本发明的压缩原理就是通过寻找其中的规律,简化数字的排列。比如:00000110001111111111可以简化成5个0,2个1,3个0,10个1的排列。
FSN文件是以二进制格式打开的,大部分都是连续的0,这样可以按照本发明所述的压缩方法来对其进行无损压缩,利用本发明方法压缩完后生成的新文件的二进制格式中将找不到字节值为0的内容,而且文件大小将变成原来的三分之一。
本发明提出的一种FSN文件高效压缩方法,包括以下步骤:
(1)对FSN文件按字节读入并保存在一个byte数组中;
(2)循环判断byte数组中每个字节值,如果该字节值为非0,首先判断前一字节值是否为0,若前一字节值为0时,则将该字节向左移动1位并保存到新的byte数组中,若前一字节值为非0时,则将该字节(无需移位)直接保存到新的byte数组中;如果该字节值为0,首先计算出连续值为0的字节个数n,然后将n以二进制串的形式向左移位并保存到新的byte数组中;
(3)在新的byte数组头部加上8个字节的开始压缩标志位,在压缩标志位后填入4字节的压缩前文件内容字节数和4字节的压缩后文件内容位数,在新的byte数组尾部加上8个字节的结束标志位;
(4)压缩完后生成的新文件的后缀改为wz,以区分压缩前的FSN文件。
本发明方法是通过固定位长算法演化而来。固定位长算法是把文本用需要的最少的位来进行压缩编码。比如八个十六进制数:1,2,3,4,5,6,7,8。转换为二进制为:00000001,00000010,00000011,00000100,00000101,00000110,00000111,00001000。每个数只用到了低4位,而高4位没有用到(全为0),因此对低4位进行压缩编码后得到:0001,0010,0011,0100,0101,0110,0111,1000。然后补充为字节得到:00010010,00110100,01010110,01111000。所以原来的八个十六进制数缩短了一半,得到4个十六进制数:12,34,56,78。
本发明是在此算法基础之上又做了进一步的改进,使得压缩比更高,压缩效率更快。当连续值为0的字节个数n小于等于7时,输出right(bin(n),4)的二进制串放入到新的byte数组中;当连续值为0的字节个数n大于7并且可以被7整除时,输出right(bin(7),4)*(n mod 7)的二进制串放入到新的byte数组中;当连续值为0的字节个数n大于7并且不可以被7整除时,输出right(bin(7),4)*(n mod 7)+right(bin(n%7))的二进制串放入到新的byte数组中。经过此种算法可以更大限度的压缩无用字节,以保证压缩完后的文件内容都是有效数据,减少存储空间和传输流量。
进一步地,压缩后文件内容字节数+16=wz文件字节数>16;压缩后文件内容位数+7>=压缩后文件内容字节数*8>=压缩后文件内容位数;压缩后文件内容二进制位串中连续0长度<=10。
本发明的有益效果:
1.利用了传统的固定位长算法,编码相当容易理解,有利于解析。
2.由于是按位编码操作,算法容易重构,支持各种编程语言(JAVA,C,C++,C#等)。
3.本方法方法大大减轻了设备端的处理压力,也在网络传输过程中降低了传输流量,大大提升了文件上传速度和文件上传量,降低带宽要求和减少网络压力。
附图说明
图1为以二进制格式打开的压缩前的FSN文件截图;
图2为以二进制格式打开的压缩后的wz文件截图;
图3为具体的二进制压缩数据流位移图;
图4为二叉码树图;
图5为FSN文件压缩流程图。
具体实施方式
本发明为了解决传统技术方案存在的弊端,通过以下实施例进一步阐述本发明所述的一种FSN文件高效压缩方法,以下对具体实施方式进行详细描述,但不作为对本发明的限定。
本发明的实现是基于固定位长算法基础之上又做了进一步的改进,通过设备生成的FSN文件以字节流的方式经过特定的无损压缩算法,而演化出的一套独有的高效率的压缩方法。
如图1所示,通过支持生成FSN文件的设备先生成出一个FSN文件,该文件以二进制格式打开,如图1所示,该文件内容包括:设备编号,点钞张数,点钞时间,币种,币值,冠字号码,冠字号图片等信息;该文件大小固定(文件字节位数固定);根据图1可以清楚的发现有很多连续的0字节内容,这些无用的字节都是可以被压缩掉的;其他非0字节内容可以通过移位的方式进行重新排列,从而得到一个新的字节流。
如图2所示,就是图1文件通过本压缩方法压缩过后生成的二进制字节流,从图中可以发现之前的0字节内容已经被舍去,之前的非0字节内容也已经重新排列组合成新的字节流,文件总大小也变成了之前的三分之一;需要注意的是压缩完后的字节流前4个字节存放的是压缩前文件内容字节数,紧接着4个字节存放的是压缩后文件内容位数;
如图3所示,是本发明的核心压缩位移图,通过此图可以发现本发明的压缩方法的核心就是通过压缩连续的0字节内容来进行字节流的重新排列组合,以达到最终的压缩效果。
如图4所示,是以二叉树的方式对图3做的一个补充说明。遇0字节时舍去并记录0的个数向前补位,遇非0字节时计算当前压缩位置并向前补位。
如图5所示,是本发明一种FSN文件高效压缩方法的具体流程图,包括以下步骤:
(1)对FSN文件按字节读入并保存在一个byte数组中;
(2)循环判断byte数组中每个字节值,如果该字节值为非0,首先判断前一字节值是否为0,若前一字节值为0时,则将该字节向左移动1位并保存到新的byte数组中,若前一字节值为非0时,则将该字节(无需移位)直接保存到新的byte数组中;如果该字节值为0,首先计算出连续值为0的字节个数n,然后将n以二进制串的形式向左移位并保存到新的byte数组中,具体为:当连续值为0的字节个数n小于等于7时,则输出right(bin(n),4)的二进制串保存到新的byte数组中;当连续值为0的字节个数n大于7并且可以被7整除时,则输出right(bin(7),4)*(n mod 7)的二进制串保存到新的byte数组中;当连续值为0的字节个数n大于7并且不可以被7整除时,则输出right(bin(7),4)*(n mod 7)+right(bin(n%7))的二进制串保存到新的byte数组中;
(3)在新的byte数组头部加上8个字节的开始压缩标志位,在压缩标志位后填入4字节的压缩前文件内容字节数和4字节的压缩后文件内容位数,在新的byte数组尾部加上8个字节的结束标志位;
(4)压缩完后生成的新文件的后缀改为wz,以区分压缩前的FSN文件。压缩完后的新文件大小是原文件大小的三分之一。

Claims (1)

1.一种FSN文件高效压缩方法,其特征在于,该方法包括以下步骤:
(1)对FSN文件按字节读入并保存在一个byte数组中;
(2)循环判断byte数组中每个字节值,如果该字节值为非0,首先判断前一字节值是否为0,若前一字节值为0时,则将该字节向左移动1位并保存到新的byte数组中,若前一字节值为非0时,则将该字节直接保存到新的byte数组中;如果该字节值为0,首先计算出连续值为0的字节个数n,然后将n以二进制串的形式向左移位并保存到新的byte数组中,具体为:当连续值为0的字节个数n小于等于7时,则输出right(bin(n),4)的二进制串保存到新的byte数组中;当连续值为0的字节个数n大于7并且可以被7整除时,则输出right(bin(7),4)*(n mod 7)的二进制串保存到新的byte数组中;当连续值为0的字节个数n大于7并且不可以被7整除时,则输出right(bin(7),4)*(n mod 7)+right(bin(n%7))的二进制串保存到新的byte数组中;
(3)在新的byte数组头部加上8个字节的开始压缩标志位,在压缩标志位后填入4字节的压缩前文件内容字节数和4字节的压缩后文件内容位数,在新的byte数组尾部加上8个字节的结束标志位;压缩后文件内容字节数+16=wz文件字节数>16;压缩后文件内容位数+7>=压缩后文件内容字节数*8>=压缩后文件内容位数;压缩后文件内容二进制位串中连续0长度<=10;
(4)压缩完后生成的新文件的后缀改为wz,以区分压缩前的FSN文件。
CN201510908590.2A 2015-12-09 2015-12-09 一种fsn文件高效压缩方法 Active CN105337617B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510908590.2A CN105337617B (zh) 2015-12-09 2015-12-09 一种fsn文件高效压缩方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510908590.2A CN105337617B (zh) 2015-12-09 2015-12-09 一种fsn文件高效压缩方法

Publications (2)

Publication Number Publication Date
CN105337617A CN105337617A (zh) 2016-02-17
CN105337617B true CN105337617B (zh) 2018-10-26

Family

ID=55287955

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510908590.2A Active CN105337617B (zh) 2015-12-09 2015-12-09 一种fsn文件高效压缩方法

Country Status (1)

Country Link
CN (1) CN105337617B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107961034A (zh) * 2016-10-19 2018-04-27 北京东软医疗设备有限公司 处理通道数据的方法及装置
CN106782573B (zh) * 2016-11-30 2020-04-24 北京酷我科技有限公司 一种编码生成aac文件的方法
CN111885125A (zh) * 2020-07-07 2020-11-03 普华云创科技(北京)有限公司 端对端网络的数据传输方法、系统及计算机可读存储介质
CN112527754A (zh) * 2020-12-23 2021-03-19 山东鲁能软件技术有限公司 基于按位变长存储的数值型数据压缩方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1949670A (zh) * 2005-10-10 2007-04-18 中兴通讯股份有限公司 一种数据压缩及解压缩方法
CN101977061A (zh) * 2010-10-19 2011-02-16 广西师范大学 一种通用信息的无损压缩与解压缩方法
CN102821275A (zh) * 2011-06-08 2012-12-12 中兴通讯股份有限公司 数据压缩方法及装置、数据解压缩方法及装置
CN103546161A (zh) * 2013-10-31 2014-01-29 江苏引跑网络科技有限公司 基于二进制位处理的无损压缩方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2007290044A1 (en) * 2006-09-01 2008-03-06 Pacbyte Software Pty Limited Method and system for transmitting a data file over a data network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1949670A (zh) * 2005-10-10 2007-04-18 中兴通讯股份有限公司 一种数据压缩及解压缩方法
CN101977061A (zh) * 2010-10-19 2011-02-16 广西师范大学 一种通用信息的无损压缩与解压缩方法
CN102821275A (zh) * 2011-06-08 2012-12-12 中兴通讯股份有限公司 数据压缩方法及装置、数据解压缩方法及装置
CN103546161A (zh) * 2013-10-31 2014-01-29 江苏引跑网络科技有限公司 基于二进制位处理的无损压缩方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
气象雷达原始回波数据无损压缩算法研究;许海英;《中国优秀硕士学位论文全文数据库 信息科技辑》;20070915(第03期);全文 *

Also Published As

Publication number Publication date
CN105337617A (zh) 2016-02-17

Similar Documents

Publication Publication Date Title
CN105337617B (zh) 一种fsn文件高效压缩方法
CN101894115B (zh) 电子文档的图像数据处理方法及其装置
US8578058B2 (en) Real-time multi-block lossless recompression
CN104380267B (zh) 数据解压/压缩装置
CN102122960B (zh) 一种针对二进制数据的多字符组合无损数据压缩方法
CN105207678B (zh) 一种改进型lz4压缩算法的硬件实现系统
CN106170921A (zh) 涉及符号压缩的数据的源编码和解码方法及装置
US20130307709A1 (en) Efficient techniques for aligned fixed-length compression
CN102088604A (zh) 一种影片缩略图的压缩方法及压缩装置
CN105359418B (zh) 编码器、解码器和编码解码方法
CN104125475B (zh) 一种多维量子数据压缩、解压缩方法及装置
WO2019228098A1 (zh) 一种数据压缩方法及装置
CN103067022A (zh) 一种整型数据无损压缩方法、解压缩方法及装置
CN106407285A (zh) 一种基于rle和lzw的优化比特文件压缩与解压缩方法
CN110943744B (zh) 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置
CN116016606B (zh) 一种基于智慧云的污水处理运维数据高效管理系统
CN103546161A (zh) 基于二进制位处理的无损压缩方法
CN104394415B (zh) 一种视频大数据分布式解码的方法
US6748520B1 (en) System and method for compressing and decompressing a binary code image
CN101266795B (zh) 一种格矢量量化编解码的实现方法及装置
CN100568284C (zh) 计算机图形数据编码装置、解码装置、编码和解码方法
CN104682966A (zh) 列表数据的无损压缩方法
CN108932315A (zh) 一种数据解压的方法以及相关装置
CN102651795B (zh) 游长缩减的二元序列压缩编码方法
US9135009B2 (en) Apparatus and method for compressing instructions and a computer-readable storage media therefor

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 325899 No. 188 Yongjin Road, Lingxi Town, Cangnan County, Wenzhou City, Zhejiang Province

Patentee after: Polytron Technologies Inc

Address before: 325899 North of Tanghe Road, Cangnan County Industrial Park, Lingxi Town, Cangnan County, Wenzhou City, Zhejiang Province

Patentee before: Zhejiang Wei Rong electronics technology limited company

CP03 Change of name, title or address
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method for efficiently compressing full service network (FSN) files

Effective date of registration: 20191021

Granted publication date: 20181026

Pledgee: Bank of China, Limited by Share Ltd, Cangnan County branch

Pledgor: Weirong Technology Co., Ltd.

Registration number: Y2019330000129

PE01 Entry into force of the registration of the contract for pledge of patent right