二进制数据的编码、解码方法和装置制造方法及图纸

技术编号:17737230 阅读:31 留言:0更新日期:2018-04-18 13:20
本申请提供一种二进制数据的编码方法,包括:获取二进制数据;所述二进制数据的长度为k字节,k为自然数;采用预定编码算法将k字节的二进制数据转换为(k+t)字节的7位编码数据,t为大于等于k除以7的最小整数。通过本申请技术方案得到的编码文件比Base64编码文件的长度更小,在网络上传输时消耗的流量更少,能够适应更为苛刻的应用场景要求。

The encoding and decoding methods and devices of binary data

The present invention provides a method for encoding binary data, including obtaining the binary data; the binary data length is k bytes, K is a natural number; using a predetermined encoding algorithm of binary data is converted to K bytes (k+t) encoding 7 bytes of data, t is the smallest integer greater than or equal to K divided by 7. The coding file obtained through the application technology scheme is smaller than the Base64 encoded file length, and the traffic consumed on the network is less, which can adapt to the more demanding application scenarios.

【技术实现步骤摘要】
二进制数据的编码、解码方法和装置
本申请涉及网络通信
,尤其涉及一种二进制数据的编码方法和装置、一种二进制数据的解码方法和装置。
技术介绍
在计算机中很多资源以二进制数据的形式存储,例如图片、音视频流、可执行程序等,包含这些资源的文件通常都是二进制文件。但是在一些网络协议或网络应用中,能够正确传输的数据只能是通用字符,二进制数据在基于这些网络协议或网络应用进行传输时,需要先在发送端将二进制数据编码为字符数据,在传输到接收端后,再将字符数据解码为二进制数据。现有技术中,Base64是最为常用的二进制数据编解码技术。Base64采用64个字符对二进制数据进行编码,对N字节的二进制数据,将对应的8*N位中连续的每6位分割为1个部分,每个部分的值都在0到63之间,将该值对应于1个ASCII(AmericanStandardCodeforInformationInterchange,美国信息交换标准代码)字符,将所有部分对应的ASCII字符拼接起来,即可得到二进制数据的Base64编码。对应的解码过程与上述相逆,不再赘述。可见,3字节二进制数据的Base64编码数据的长度为4字节,一个二进制文件在转换为Base64编码文件后,文件长度增加了大约33%。也就是说,Base64编码后的二进制文件在传输时要占用的流量增加了三分之一左右。在移动互联应用中,降低服务端与用户手持设备之间的交互流量对所有业务而言都是至关重要的问题。Base64编码后的字符文件较大,难以满足一些苛刻的应用场景的要求。
技术实现思路
有鉴于此,本申请提供一种二进制数据的编码方法,包括:获取二进制数据;所述二进制数据的长度为k字节,k为自然数;采用预定编码算法将k字节的二进制数据转换为(k+t)字节的7位编码数据,t为大于等于k除以7的最小整数。本申请提供的一种二进制数据的解码方法,包括:获取待解码的7位编码数据;所述7位编码数据的长度为p字节,p为大于1的自然数;采用预定解码算法将p字节的7位编码数据转换为(p-t)字节的二进制数据,t为大于等于p除以8的最小整数。本申请还提供了一种二进制数据的编码装置,包括:二进制数据获取单元,用于获取二进制数据;所述二进制数据的长度为k字节,k为自然数;7位编码单元,用于采用预定编码算法将k字节的二进制数据转换为(k+t)字节的7位编码数据,t为大于等于k除以7的最小整数。本申请提供的一种二进制数据的解码装置,包括:待解码数据获取单元,用于获取待解码的7位编码数据;所述7位编码数据的长度为p字节,p为大于1的自然数;7位解码单元,用于采用预定解码算法将p字节的7位编码数据转换为(p-t)字节的二进制数据,t为大于等于p除以8的最小整数。由以上技术方案可见,本申请的实施例中,在编码时,采用预定编码算法对二进制数据进行7位编码;在解码时,采用预定解码算法将7位编码恢复为二进制数据;由于7字节的二进制数据可以转换为8字节的7位编码数据,二进制数据在转换为7位编码数据后长度大约增加了14.3%,因此采用本申请技术方案得到的编码文件比Base64编码文件的长度更小,在网络上传输时消耗的流量更少,能够适应更为苛刻的应用场景要求。附图说明图1是本申请实施例中一种二进制数据的编码方法的流程图;图2是本申请实施例中一种二进制数据的解码方法的流程图;图3是本申请实施例中第一种预定编码算法示例的示意图;图4是本申请实施例中第二种预定编码算法示例的示意图;图5是运行本申请实施例的设备的一种硬件结构图;图6是本申请实施例中一种二进制数据的编码装置的逻辑结构图;图7是本申请实施例中一种二进制数据的解码装置的逻辑结构图。具体实施方式在绝大多数编码方式中,十进制值0到127所对应的字符在网络传输中能够被各种网络协议或网络应用支持。例如,ASCII编码、UTF-7(UnicodeTransformationFormat7,7位元Unicode转换格式)、7位等宽编码等。也就是说,在将二进制文件转换为上述这些编码方式的7位编码文件后,即可在各种应用中、基于各种协议进行文件传输。7位编码是采用一个字节的低7位来承载数据的编码方式。7位编码可以将7字节的二进制数据转换为8字节的编码数据,相比于Base64编码将3字节的二进制数据转换为4字节的编码,其转换效率更高,转换后的编码文件更小,更为节省传输流量。因此,本申请的实施例提出一种新的二进制数据的编码方法和对应的二进制数据的解码方法,分别用来将二进制数据转换为7位编码数据、以及将7位编码数据还原为二进制数据,以减小编码数据的长度,节约编码数据在网络传输时消耗的流量,从而解决现有技术中存在的问题。本申请的实施例可以应用在任何具有计算和存储能力的设备上,例如可以是手机、平板电脑、PC(PersonalComputer,个人电脑)、笔记本、服务器、虚拟机等物理设备或逻辑设备;也可以由两个或两个以上分担不同职责的物理或逻辑设备、相互协同来实现本申请实施例中的各项功能。其中,编码方法和解码方法可以分别运行在不同的设备上,也可以运行在同一个设备上。本申请的实施例中,二进制数据的编码方法的流程如图1所示。步骤110,获取二进制数据。待转换的二进制数据可以是一个二进制文件,也可以是作为一个文件组成部分的一段二进制数据,不做限定。可以从某个网络中的存储位置读取二进制数据,也可以从指定的缓存中获得待转换的二进制数据,本申请的实施例同样不做限定。设所获取的二进制数据的长度为k(k为自然数)字节。步骤120,采用预定编码算法将k字节的二进制数据转换为(k+t)字节的7位编码数据,t为大于等于k除以7的最小整数。一个字节的二进制数据有效位是8位,而一个字节的7位编码数据有效位是7位。因此,在将二进制数据转换为7位编码数据时,1到7个字节的二进制数据分别可以由2到8个字节的7位编码数据来表达,编码后增加的长度为1个字节;8到14字节的二进制数据分别可以由10到16个字节的7位编码数据来表达,编码后增加的长度为2个字节;依次类推,k字节的二进制数据可以由(k+t)字节的7位编码数据来表达,t为大于等于k除以7的最小整数。换言之,在将k字节的二进制数据转换为7位编码数据时,增加的长度为t个字节。任何一种可以将k字节二进制数据一对一映射为(k+t)字节的7位编码数据的算法都可以用作预定编码算法,本申请的实施例不做限定。本申请的实施例中,二进制数据的解码方法的流程如图2所示。步骤210,获取待解码的7位编码数据。类似的,待解码的7位编码数据可以是一个编码文件,也可以是作为一个文件组成部分的一段7位编码数据,不做限定。可以从某个网络中的存储位置读取7位编码数据,也可以从指定的缓存中获得待解码的7位编码数据,本申请的实施例同样不做限定。设待解码的7位编码数据的长度为p(p为大于1的自然数)字节。步骤220,采用预定解码算法将p字节的7位编码数据转换为(p-t)字节的二进制数据,t为大于等于p除以8的最小整数。如前所述,2到8个字节的7位编码数据分别可以表达1到7个字节的二进制数据,解码后减少的长度为1个字节;10到16个字节的7位编码数据分别可以表达8到14字节的二进制数据,解码后减少的长度为2个字节;依次类推,p字节的本文档来自技高网...
二进制数据的编码、解码方法和装置

【技术保护点】
一种二进制数据的编码方法,其特征在于,包括:获取二进制数据;所述二进制数据的长度为k字节,k为自然数;采用预定编码算法将k字节的二进制数据转换为(k+t)字节的7位编码数据,t为大于等于k除以7的最小整数。

【技术特征摘要】
1.一种二进制数据的编码方法,其特征在于,包括:获取二进制数据;所述二进制数据的长度为k字节,k为自然数;采用预定编码算法将k字节的二进制数据转换为(k+t)字节的7位编码数据,t为大于等于k除以7的最小整数。2.根据权利要求1所述的方法,其特征在于,所述预定编码算法包括:在k字节二进制数据中提取每个字节的预定位,按照设定位顺序组合为t字节7位编码的组合位数据;将k字节二进制数据中每个字节剩余的7位作为k字节7位编码的剩余位数据;将k字节7位编码的剩余位数据和t字节7位编码的组合位数据按照设定字节顺序进行排列,生成所述二进制数据的7位编码数据。3.根据权利要求2所述的方法,其特征在于,所述设定字节顺序包括:k字节剩余位数据在t字节组合位数据之前或之后,按照所对应的二进制数据排列。4.根据权利要求2所述的方法,其特征在于,所述设定位顺序包括:将连续的s字节二进制数据中提取的预定位依次作为一个字节组合位数据的第0位到第(s-1)位、或第(s-1)位到第0位;s为不大于7的自然数。5.根据权利要求2所述的方法,其特征在于,所述预定位为每个字节的最高位。6.一种二进制数据的解码方法,其特征在于,包括:获取待解码的7位编码数据;所述7位编码数据的长度为p字节,p为大于1的自然数;采用预定解码算法将p字节的7位编码数据转换为(p-t)字节的二进制数据,t为大于等于p除以8的最小整数。7.根据权利要求6所述的方法,其特征在于,所述预定解码算法包括:按照设定字节顺序,从p字节的7位编码数据中获取k字节的剩余位数据和t字节的组合位数据,k为p减去t的差值;从t字节7位编码的组合位数据中提取k位,将提取的每1位插入与所述位的设定位顺序对应的k字节剩余位数据的预定位,得到k字节二进制数据。8.根据权利要求7所述的方法,其特征在于,所述设定字节顺序包括:k字节剩余位数据在t字节组合位数据之前或之后,按照所对应的二进制数据排列。9.根据权利要求7所述的方法,其特征在于,所述设定位顺序包括:一个字节组合位数据的第0位到第(s-1)位、或第(s-1)位到第0位,依次对应于连续的s字节剩余位数据;s为不大于7的自然数。10.根据权利要求7所述的方法,其特征在于,所述预定位为每个字节的最高位。11.一种二进制数据的编码装置,其特征在于,包括:二进制数...

【专利技术属性】
技术研发人员:徐达峰黎三平
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1