CN105740215A - 一种数据通信编码和解码方法 - Google Patents

一种数据通信编码和解码方法 Download PDF

Info

Publication number
CN105740215A
CN105740215A CN201610046833.0A CN201610046833A CN105740215A CN 105740215 A CN105740215 A CN 105740215A CN 201610046833 A CN201610046833 A CN 201610046833A CN 105740215 A CN105740215 A CN 105740215A
Authority
CN
China
Prior art keywords
byte
character
data
integer
bits
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.)
Pending
Application number
CN201610046833.0A
Other languages
English (en)
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.)
Beijing Zhang Kuo Mobile Media Science And Technology Ltd
Original Assignee
Beijing Zhang Kuo Mobile Media Science And Technology 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 Beijing Zhang Kuo Mobile Media Science And Technology Ltd filed Critical Beijing Zhang Kuo Mobile Media Science And Technology Ltd
Priority to CN201610046833.0A priority Critical patent/CN105740215A/zh
Publication of CN105740215A publication Critical patent/CN105740215A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种数据通信编码和解码方法,包括:步骤1)制定一个映射表,使得二进制字节数据能够被影射到可显的文本字符,其中,所述文本字符为一组ASCII字符;步骤2)获得需要通信的数据的二进制数据,将任一字节的二进制数据转为相应的Base64编码文本字符。本发明以定长方式对二进制数据做编码,因此首先能很容易地通过base64编码获得原始数据的长度,其次解析起来十分便利,非常有利于计算机处理器的计算。

Description

一种数据通信编码和解码方法
技术领域
本发明属于计算机通信领域,尤其涉及一种数据通信编码和解码方法。
背景技术
Base64是一种流行于网络二进制信息传输的编码。它能将不能显示的二进制字节数据转为可见的文本字节数据。由于很多公共的网络协议需要传递可见的文本字符,因此需要将一些二进制数据(比如图像、音频数据)转为可见的文本数据才能进行传输、交换。
现有的Base64编码与解码方式存在两个问题。
第一,就是标准完全是开放的,因此如果某些黑客知道当前数据用的是Base64编码方式,那么它们很容易就能获得相应的原始数据信息。
其次,处理现有的编码方式对处理器而言并不友好,因为它需要向后看两个字节进行判定策略,分支判断比较多,这会阻碍处理器的计算性能。
发明内容
本发明所要解决的是基于现有技术是公开标准,不利于公司内部数据通信的保密性,算法略为复杂,计算机处理的速度会相对较慢,从编码后的字符串来获得原始二进制数据的长度也较复杂。
本发明解决上述技术问题所采取的技术方案如下:
一种数据通信编码方法,包括:
步骤1)制定一个映射表,使得二进制字节数据能够被映射到可显的文本字符,其中,所述文本字符为一组ASCII字符;
步骤2)获得需要通信的数据的二进制数据,将任一字节的二进制数据转为相应的Base64编码文本字符。
进一步地,优选的方法是,步骤1)中,选取以下一组共6比特的ASCII字符。
进一步地,优选的方法是,还包括:设置一个由2个比特构成的进位标志;
其中,所述2个比特能表示0到3这四个数字;
0表示相应字节表示的是0到63的整数;1表示相应字节表示的是64到127的整数;2表示相应字节表示的是128到191的整数;3表示相应字节表示的是192到255的整数;
其中,基于以上6比特的文本信息位与2比特的进位位,将任一字节的二进制数据转为相应的Base64编码文本字符。
优选的方法是,进一步包括:将三个字节的进位位组合在一起拼成一个6位的整数,该整数通过上述列出的字符进行表达,具体包括:
编码方式为第一个字节为后三个字节的进位位的表示字节,第二个字节为第一个字节模64后的信息,第三个字节为第二个字节模64后的信息,第四个字节为第三个字节模64后的信息。
进一步地,优选的方法是,所述一组共64个ASCII字符具体包括:
'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z',
′-′,‘_’
其中,第一个0对应于字节值0,最后的_对应于字节值63。
一种数据通信解码方法,具体包括:
步骤1)将编码后的文本字符四个字符作为一组;
步骤2)先解析第一个字节,将后三字节的进位系数解析出来;
步骤3)然后以此将后三个字符变为相应的字符映射前的整数,然后乘以进位系数,以此得到原来的二进制字节值,该二进制字节值即为传递过来的数据。
本发明采取了以上方案以后,以定长方式对二进制数据做编码,因此首先能很容易地通过base64编码获得原始数据的长度,其次解析起来十分便利,非常有利于计算机处理器的计算。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
下面结合附图对本发明进行详细的描述,以使得本发明的上述优点更加明确。其中,
图1是本发明一个实施例的字节编码的示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
其中,本发明中的缩写如下:
URL:统一资源定位符。用于指定本地或网络上的某一资源的位置。
ASCII码:美国国家标准信息交换码。目前作为计算机标准的基本字符集。
模:求余数操作。比如a模b表示求a除以b的余数。
具体来说,本发明提供了一种数据通信的编码方法和解码方法,其中,根据具体实施例,一种数据通信编码方法,包括:
步骤1)制定一个映射表,使得二进制字节数据能够被映射到可显的文本字符,其中,所述文本字符为一组ASCII字符;
步骤2)获得需要通信的数据的二进制数据,将任一字节的二进制数据转为相应的Base64编码文本字符。
进一步地,优选的方法是,步骤1)中,选取以下一组共6比特的ASCII字符。
进一步地,优选的方法是,还包括:设置一个由2个比特构成的进位标志;
其中,所述2个比特能表示0到3这四个数字;
0表示相应字节表示的是0到63的整数;1表示相应字节表示的是64到127的整数;2表示相应字节表示的是128到191的整数;3表示相应字节表示的是192到255的整数;
其中,基于以上6比特的文本信息位与2比特的进位位,将任一字节的二进制数据转为相应的Base64编码文本字符。
优选的方法是,进一步包括:将三个字节的进位位组合在一起拼成一个6位的整数,该整数通过上述列出的字符进行表达,具体包括:
编码方式为第一个字节为后三个字节的进位位的表示字节,第二个字节为第一个字节模64后的信息,第三个字节为第二个字节模64后的信息,第四个字节为第三个字节模64后的信息。
进一步地,优选的方法是,所述一组共64个ASCII字符具体包括:
'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z',
′-′,‘_’
其中,第一个0对应于字节值0,最后的_对应于字节值63。
一种数据通信解码方法,具体包括:
步骤1)将编码后的文本字符四个字符作为一组;
步骤2)先解析第一个字节,将后三字节的进位系数解析出来;
步骤3)然后以此将后三个字符变为相应的字符映射前的整数,然后乘以进位系数,以此得到原来的二进制字节值,该二进制字节值即为传递过来的数据。
更具体地说,在实施例中,首先本定制版的base64编码需要制定一个映射表,使得二进制字节数据能够被影射到可显的文本字符。我们从中选择了一组可显示的,并且能完全满足URL标准规范的ASCII字符:
'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z',
′-′,‘_’
第一个0对应于字节值0,最后的_对应于字节值63。由于一个字节所表示的整数范围是0到255,一共有256种表示,所以上述64个字符远远不够。为了能显示大于63的字节,本编码用一个由2个比特构成的进位标志来表示。2个比特能表示0到3这四个数字,0表示相应字节表示的是0到63的整数;1表示相应字节表示的是64到127的整数;2表示相应字节表示的是128到191的整数;3表示相应字节表示的是192到255的整数。
有了6比特的文本信息位与2比特的进位位,我们就能够将任一字节的二进制数据转为相应的定制的Base64编码文本字符了。但是这里还要解决一个进位位的存放问题。由于我们只需要使用2位进位标志位,因此如果将2个比特作为一个字节来用显然非常浪费,因此我们这里将三个字节的进位位组合在一起拼成一个6位的整数,这样该整数正好又能通过上述列出的字符进行表达。所以,编码方式为第一个字节为后三个字节的进位位的表示字节,第二个字节为第一个字节模64后的信息,第三个字节为第二个字节模64后的信息,第四个字节为第三个字节模64后的信息。因此,对于连续三个字节信息所对应的特制Base64编码的格式如图1所示:
具体来说,在图1中,最左边的字节为第一个字节,最右边的字节为第4个字节。其中,第一个字节中比特0、比特1表示“字节1”的进位位;比特2、比特3表示“字节2”的进位位;比特4、比特5表示“字节3”的进位位;比特6、比特7全0。
下面举一个实际例子:对字节序列0x03,0x41,0x80进行特制的Base64编码,那么按照流程,先判定每个字节的进位位。第一个字节0x3,小于64,因此进位位为0;第二个字节0x41,大于64,但小于128,所进位位为1;第三个字节为0x80,正好是128,进位位为2。所以整个进位字节为0b00020100,十六进制为0x24,十进制为36,对于上述字母映射表中的小写的’a’。第一个字节是0x3,对应字母映射表中的’3’。第二个字节为0x41,减去64之后为1,所以对应字母映射表中的’1’;第三个字节为0x80,减去128之后为0,对应于字母映射表中的’0’。所以编码后的文本字符串为:”a310”。
而对于编码好的文本字符串,要获取对它解码后的字节长度也非常容易。由于每三个字节生成一组文本编码串,而编码后的一组文本编码字符串由四个字符构成,所以计算方式为:将编码后的文本字符串长度除以4,然后将整数部分乘以3,再加上余数部分就是编码前的字节序列长度(或解码后的字节序列长度)。
而解码过程也十分简单。将编码后的文本字符四个字符作为一组,先解析第一个字节,将后三字节的进位系数解析出来,然后以此将后三个字符变为相应的字符映射前的整数,然后乘以进位系数就得到了原来的二进制字节值。
其中,与现有技术相比,本发明以三个字节作为一组进行编码,形成四字符编码组;编码组中的第一个字节以两个比特位作为相应字节信息的进位系数;编码组中的第一个字节一共由6位比特位构成,最高2位为全0,其存在以下的技术效果:
1、更可靠的安全性
2、编码规则更为灵活(字节映射表可自定义,字符编码顺序也可自定义)
3、压缩度高
4、编码、解码算法简单,方便通用处理器处理计算,比起原先的算法在处理速度上更快。
需要说明的是,对于上述方法实施例而言,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种数据通信编码方法,其特征在于,包括:
步骤1)制定一个映射表,使得二进制字节数据能够被映射到可显的文本字符,其中,所述文本字符为一组ASCII字符;
步骤2)获得需要通信的数据的二进制数据,将任一字节的二进制数据转为相应的Base64编码文本字符。
2.根据权利要求1所述的数据通信编码方法,其特征在于,步骤1)中,选取以下一组共6比特的ASCII字符。
3.根据权利要求2所述的数据通信编码方法,其特征在于,还包括:设置一个由2个比特构成的进位标志;
其中,所述2个比特能表示0到3这四个数字;
0表示相应字节表示的是0到63的整数;1表示相应字节表示的是64到127的整数;2表示相应字节表示的是128到191的整数;3表示相应字节表示的是192到255的整数;
其中,基于以上6比特的文本信息位与2比特的进位位,将任一字节的二进制数据转为相应的Base64编码文本字符。
4.根据权利要求3所述的数据通信编码方法,其特征在于,进一步包括:将三个字节的进位位组合在一起拼成一个6比特的整数,该整数通过上述列出的字符进行表达,具体包括:
编码方式为第一个字节为后三个字节的进位位的表示字节,第二个字节为第一个字节模64后的信息,第三个字节为第二个字节模64后的信息,第四个字节为第三个字节模64后的信息。
5.根据权利要求2所述的数据通信编码方法,其特征在于,所述一组共64个ASCII字符具体包括:
′0′,′1′,′2′,′3′,′4′,′5′,′6′,′7′,′8′,′9′,
′A′,′B′,′C′,′D′,′E′,′F′,′G′,′H′,′I′,′J′,
′K′,′L′,′M′,′N′,′O′,′P′,′Q′,′R′,′S′,′T′,
′U′,′V′,′W′,′X′,′Y′,′Z′,
′a′,′b′,′c′,′d′,′e′,′f′,′g′,′h′,′i′,′j′,
′k′,′l′,′m′,′n′,′o′,′p′,′q′,′r′,′s′,′t′,
′u′,′v′,′w′,′x′,′y′,′z′,
′-′,‘_’
其中,第一个0对应于字节值0,最后的_对应于字节值63。
6.一种数据通信解码方法,其特征在于,包括:
步骤1)将编码后的文本字符四个字符作为一组;
步骤2)先解析第一个字节,将后三字节的进位系数解析出来;
步骤3)然后以此将后三个字符变为相应的字符映射前的整数,然后乘以进位系数,以此得到原来的二进制字节值,该二进制字节值即为传递的数据。
CN201610046833.0A 2016-01-23 2016-01-23 一种数据通信编码和解码方法 Pending CN105740215A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610046833.0A CN105740215A (zh) 2016-01-23 2016-01-23 一种数据通信编码和解码方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610046833.0A CN105740215A (zh) 2016-01-23 2016-01-23 一种数据通信编码和解码方法

Publications (1)

Publication Number Publication Date
CN105740215A true CN105740215A (zh) 2016-07-06

Family

ID=56247388

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610046833.0A Pending CN105740215A (zh) 2016-01-23 2016-01-23 一种数据通信编码和解码方法

Country Status (1)

Country Link
CN (1) CN105740215A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018068634A1 (zh) * 2016-10-11 2018-04-19 阿里巴巴集团控股有限公司 二进制数据的编码、解码方法和装置
CN109871520A (zh) * 2019-02-28 2019-06-11 魏勇 一种适用于http内容内嵌的二进制数据编解码方法
CN110019075A (zh) * 2018-08-09 2019-07-16 苏州科达科技股份有限公司 日志加密方法与解密方法及装置
CN110569487A (zh) * 2019-08-19 2019-12-13 积成电子股份有限公司 一种基于高频率字符替代算法的Base64扩展编码方法及***
CN111026375A (zh) * 2019-10-17 2020-04-17 北京达佳互联信息技术有限公司 项目打包方法、装置及设备
CN111274950A (zh) * 2020-01-19 2020-06-12 青岛海信移动通信技术股份有限公司 特征向量数据编解码方法及服务器和终端
CN111428442A (zh) * 2020-03-25 2020-07-17 北京思特奇信息技术股份有限公司 一种无需字典表的数据转换方法、***及存储介质
CN111600610A (zh) * 2020-05-26 2020-08-28 北京思特奇信息技术股份有限公司 一种变长整数的通用编码方法、***及电子设备
CN111866520A (zh) * 2019-04-24 2020-10-30 博世汽车部件(苏州)有限公司 编解码方法、编解码设备以及通信***
CN112818639A (zh) * 2020-12-30 2021-05-18 平安普惠企业管理有限公司 数据编码方法、装置、计算机设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102033959A (zh) * 2010-12-29 2011-04-27 北京播思软件技术有限公司 一种分布式计算***中对象传递的方法
CN104601177A (zh) * 2014-12-30 2015-05-06 飞天诚信科技股份有限公司 一种基于base64编码的解码扩展实现方法
US20150277865A1 (en) * 2012-11-07 2015-10-01 Koninklijke Philips N.V. Compiler generating operator free code

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102033959A (zh) * 2010-12-29 2011-04-27 北京播思软件技术有限公司 一种分布式计算***中对象传递的方法
US20150277865A1 (en) * 2012-11-07 2015-10-01 Koninklijke Philips N.V. Compiler generating operator free code
CN104601177A (zh) * 2014-12-30 2015-05-06 飞天诚信科技股份有限公司 一种基于base64编码的解码扩展实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
姚峰: "Java平台中Base64编码/解码算法的改进", 《计算机应用与软件》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10785277B2 (en) 2016-10-11 2020-09-22 Alibaba Group Holding Limited Methods and devices for encoding and decoding binary data
WO2018068634A1 (zh) * 2016-10-11 2018-04-19 阿里巴巴集团控股有限公司 二进制数据的编码、解码方法和装置
RU2725763C1 (ru) * 2016-10-11 2020-07-06 Алибаба Груп Холдинг Лимитед Способы и устройства для кодирования и декодирования двоичных данных
CN110019075A (zh) * 2018-08-09 2019-07-16 苏州科达科技股份有限公司 日志加密方法与解密方法及装置
CN110019075B (zh) * 2018-08-09 2021-08-10 苏州科达科技股份有限公司 日志加密方法与解密方法及装置
CN109871520A (zh) * 2019-02-28 2019-06-11 魏勇 一种适用于http内容内嵌的二进制数据编解码方法
CN109871520B (zh) * 2019-02-28 2023-05-26 魏勇 一种适用于http内容内嵌的二进制数据编解码方法
CN111866520A (zh) * 2019-04-24 2020-10-30 博世汽车部件(苏州)有限公司 编解码方法、编解码设备以及通信***
CN110569487A (zh) * 2019-08-19 2019-12-13 积成电子股份有限公司 一种基于高频率字符替代算法的Base64扩展编码方法及***
CN111026375A (zh) * 2019-10-17 2020-04-17 北京达佳互联信息技术有限公司 项目打包方法、装置及设备
CN111274950A (zh) * 2020-01-19 2020-06-12 青岛海信移动通信技术股份有限公司 特征向量数据编解码方法及服务器和终端
CN111274950B (zh) * 2020-01-19 2023-09-05 青岛海信移动通信技术有限公司 特征向量数据编解码方法及服务器和终端
CN111428442A (zh) * 2020-03-25 2020-07-17 北京思特奇信息技术股份有限公司 一种无需字典表的数据转换方法、***及存储介质
CN111428442B (zh) * 2020-03-25 2023-04-21 北京思特奇信息技术股份有限公司 一种无需字典表的数据转换方法、***及存储介质
CN111600610A (zh) * 2020-05-26 2020-08-28 北京思特奇信息技术股份有限公司 一种变长整数的通用编码方法、***及电子设备
CN112818639A (zh) * 2020-12-30 2021-05-18 平安普惠企业管理有限公司 数据编码方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
CN105740215A (zh) 一种数据通信编码和解码方法
WO2016029801A1 (zh) 编码、解码方法以及编码装置和解码装置
US8344916B2 (en) System and method for simplifying transmission in parallel computing system
CN103975533B (zh) 可变长度编码的数据流的高带宽解压
JP6931050B2 (ja) バイナリデータをエンコード及びデコードする方法及び装置
CN107947918B (zh) 一种基于字符特征的无载体文本隐写方法
CN108418683B (zh) 一种基于汉字结构特征的无载体文本隐写方法
US11178212B2 (en) Compressing and transmitting structured information
CN112184367B (zh) 一种订单处理方法和装置
CN103582883A (zh) 具有组格式的可变长度数据的改进型编码和解码
CN108733317B (zh) 数据存储方法和装置
US10540490B2 (en) Deep learning for targeted password generation with cognitive user information understanding
CN104598649A (zh) 地理位置编码方法
CN102541926B (zh) 一种数据交换处理方法、设备和***
CN111666575B (zh) 基于词元编码的文本无载体信息隐藏方法
US20160335255A1 (en) Innovative method for text encodation in quick response code
US7895347B2 (en) Compact encoding of arbitrary length binary objects
CN115203600A (zh) 一种短链接的生成方法、装置、设备及介质
Figueira A Survey on Semantic Steganography Systems
CN111178010B (zh) 显示数字签名的方法及***、数据编辑方法及终端
CN111064560B (zh) 数据加密传输方法及装置、终端、数据加密传输***
CN103631983A (zh) 一种战术数据报文模拟方法及***
CN104281632B (zh) 基于对象协议映射的编码解码方法及***
US7593579B2 (en) Method for secure encoding of data
CN114444443A (zh) 一种标识识别方法、装置及终端设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20160706