数据传输方法、装置、电子设备与介质与流程

文档序号:33032837发布日期:2023-01-20 21:18阅读:75来源:国知局
数据传输方法、装置、电子设备与介质与流程

1.本发明涉及通信技术领域,尤其涉及一种数据传输方法、装置、电子设备与介质。


背景技术:

2.不同计算机系统或服务之间进行数据交互时,需要通过数据传输将要进行交互的数据对象转换为可传输格式的数据传输数据,数据传输数据可以是二进制数据流,从而能够对数据传输数据进行保持或传输等操作。实际开发中序列化和反序列化的应用场景包括:(1)对象在进行网络传输(比如远程方法调用rpc的时候)之前需要先被序列化,接收到序列化的对象之后需要再进行反序列化;(2)将对象存储到文件中的时候需要进行序列化,将对象从文件中读取出来需要进行反序列化;(3)将对象存储到缓存数据库(如 redis)时需要用到序列化,将对象从缓存数据库中读取出来需要反序列化。
3.序列化在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。依照序列化格式重新获取字节的结果时,可以利用它来产生与原始对象相同语义的副本。对于许多对象,像是使用大量引用的复杂对象,这种序列化重建的过程并不容易。面向对象中的对象序列化,并不概括之前原始对象所关系的函数。这种过程也称为对象编组。从一系列字节提取数据结构的反向操作,是反序列化(也称为解编组)。
4.目前,序列化和反序列化方法灵活性较差,缺乏与对应场景相对应的序列化流发送策略,数据传输和处理的效率低。


技术实现要素:

5.本发明的主要目的在于提出一种数据传输方法、装置、电子设备与介质,旨在实现数据跨平台存储或网络数据传输。
6.为实现上述目的,本发明提供一种数据传输方法,所述数据传输方法包括如下步骤:获取待序列化的数据对象,并确定所述待序列化的数据对象所属的数据类型;基于所述数据类型及所述数据类型对应的预设的编码格式,对所述待序列化的数据对象序列化,得到对应的序列化数据;其中,所述预设的编码格式用于表征针对不同数据类型的数据对象的序列化方式;确定所述数据对象对应的接收设备,并将所述序列化数据存储和/或传输至所述接收设备。
7.优选地,所述基于所述数据类型及所述数据类型对应的编码格式,对所述待序列化的数据对象序列化,得到对应的序列化数据的步骤包括:根据所述数据类型,确定所述数据类型对应的预设的编码格式;其中,数据类型包括正数、负数、字节数组、单精度浮点数、双精度浮点数及字符串中的一种或几种,每一数据类型对应的特定的编码格式;
根据预设的编码格式对所述待序列化的数据对象序列化,得到对应的序列化数据。
8.优选地,所述数据类型包括正数,所述根据预设的编码格式对所述待序列化的数据对象序列化,得到对应的序列化数据的步骤包括:在所述数据类型包括正数的情况下,确定所述正数对应的正数编码格式;基于所述正数编码格式,将所述待序列化的数据对象转换为对应的二进制数据,并按照预设的分解方式对所述二进制数据进行逆序分隔,得到正数分隔数据;其中,所述正数分隔数据中包括第一元组数据和多个第二元组数据;基于预设填充方式,分别填充所述第一元组数据和各个所述第二元组数据的高位,得到填充后的正数数据,并将所述填充后的正数数据转化为对应的十六进制格式数据;按照小端模式对所述十六进制格式数据进行排列,得到排列后的正数数据,并在所述排列后的正数数据的预设位置插入正数声明符,得到对应的序列化数据。
9.优选地,所述数据类型包括字节数组,所述根据预设的编码格式对所述待序列化的数据对象序列化,得到对应的序列化数据的步骤包括:在所述数据类型包括字节数组的情况下,确定所述字节数组对应的字节数组编码格式;基于所述字节数组编码格式,按照小端模式将所述待序列化的数据对象进行排列,得到排列后的字节数组;根据预设的正数编码格式对所述排列后的字节数组序列化,得到对应的序列化数据;其中,所述序列化数据的预设位置中插入有正数声明符、元组起始符和元组结束符。
10.优选地,所述数据类型包括浮点数,所述根据预设的编码格式对所述待序列化的数据对象序列化,得到对应的序列化数据的步骤包括:在所述数据类型包括浮点数的情况下,确定所述浮点数对应的浮点数编码格式;其中,所述浮点数包括单精度或双精度浮点数;基于所述浮点数编码格式,在内存按整型或长整型的方式读取所述待序列化的数据对象,并按照正数或负数的编码格式序列化所述待序列化的数据对象,得到对应的序列化数据;其中,所述序列化数据的预设位置中插入有正数或负数的声明符。
11.优选地,所述数据类型包括字符串,所述根据预设的编码格式对所述待序列化的数据对象序列化,得到对应的序列化数据的步骤包括:在所述数据类型包括字符串的情况下,确定所述字符串对应的字符串编码格式;基于所述字节数组编码格式,对所述待序列化的数据对象序列化,得到对应的序列化数据;其中,所述字节数组编码格式包括ascii编码或utf-8编码;所述序列化数据的预设位置中插入有字符声明符。
12.优选地,所述确定所述数据对象对应的接收设备,并将所述序列化数据存储和/或传输至所述接收设备的步骤之后,还包括:确定所述序列化数据所属的声明符标识,并基于所述声明符标识对应的预设的解码格式对所述序列化数据反序列化,得到所述序列化数据对应的数据对象。
13.此外,为实现上述目的,本发明还提供一种数据传输装置,所述数据传输装置包括:
确定模块,用于获取待序列化的数据对象,并确定所述待序列化的数据对象所属的数据类型;编码模块,用于基于所述数据类型及所述数据类型对应的预设的编码格式,对所述待序列化的数据对象序列化,得到对应的序列化数据;其中,所述预设的编码格式用于表征针对不同数据类型的数据对象的序列化方式;传输模块,用于确定所述数据对象对应的接收设备,并将所述序列化数据存储和/或传输至所述接收设备。
14.此外,为实现上述目的,本发明还提供一种电子设备,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据传输程序,所述数据传输程序被所述处理器执行时实现如上所述的数据传输方法的步骤。
15.此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据传输程序,所述序列化程序被处理器执行时实现如上所述的数据传输方法的步骤。
16.本发明提出的数据传输方法、装置、电子设备与介质。本发明通过获取待序列化的数据对象,并确定所述待序列化的数据对象所属的数据类型;根据数据类型,确定数据类型对应的预设的编码格式,并根据预设的编码格式对待序列化的数据对象序列化,得到对应的序列化数据;其中,所述预设的编码格式用于表征针对不同数据类型的数据对象的序列化方式;确定待序列化的数据对象对应的接收设备,并将序列化数据存储和/或传输至接收设备;从而实现数据跨平台存储或网络数据传输。
附图说明
17.图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;图2为本发明数据传输方法第一实施例的流程示意图;图3为本发明数据传输方法第一实施例的一子流程示意图;图4为本发明数据传输方法第一实施例的待序列化的数据对象连续编码的效果示意图;图5为本发明数据传输方法第二实施例的流程示意图;图6为本发明数据传输方法第二实施例的在待序列化的数据对象为正数的情况下的序列化示意图;图7为本发明数据传输方法第二实施例的在待序列化的数据对象为负数的情况下的序列化示意图;图8为本发明数据传输方法第三实施例的流程示意图;图9为本发明数据传输方法第三实施例的在待序列化的数据对象为字节数组的情况下的序列化示意图;图10为本发明数据传输方法第四实施例的流程示意图;图11为本发明数据传输方法第五实施例的流程示意图;图12为本发明数据传输方法第三实施例的在待序列化的数据对象为字符串的情况下的序列化示意图;图13为本发明数据传输装置第一实施例的功能模块示意图。
18.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
19.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
20.如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
21.本发明实施例电子设备可以是移动终端或服务器设备。
22.如图1所示,该电子设备可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
23.本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
24.如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据传输程序。
25.其中,操作系统是管理和控制电子设备与软件资源的程序,支持网络通信模块、用户接口模块、数据传输程序以及其他程序或软件的运行;网络通信模块用于管理和控制网络接口1002;用户接口模块用于管理和控制用户接口1003。
26.在图1所示的电子设备中,所述电子设备通过处理器1001调用存储器1005中存储的数据传输程序,并执行下述数据传输方法各个实施例中的操作。
27.基于上述硬件结构,提出本发明数据传输方法实施例。
28.参照图2,图2为本发明数据传输方法第一实施例的流程示意图,所述数据传输方法包括:步骤s10,获取待序列化的数据对象,并确定所述待序列化的数据对象所属的数据类型;步骤s20,基于所述数据类型及所述数据类型对应的预设的编码格式,对所述待序列化的数据对象序列化,得到对应的序列化数据;其中,所述预设的编码格式用于表征针对不同数据类型的数据对象的序列化方式;步骤30,确定所述数据对象对应的接收设备,并将所述序列化数据存储和/或传输至所述接收设备。
29.本实施例通过获取待序列化的数据对象,并确定所述待序列化的数据对象所属的数据类型;根据数据类型,确定数据类型对应的预设的编码格式,并根据预设的编码格式对待序列化的数据对象序列化,得到对应的序列化数据;确定待序列化的数据对象对应的接收设备,并将序列化数据存储和/或传输至接收设备;从而实现数据跨平台存储或网络数据传输。
30.以下将对各个步骤进行详细说明:步骤s10,获取待序列化的数据对象,并确定所述待序列化的数据对象所属的数据
类型。
31.在本实施例中,针对不同计算机系统的数据交互,如,计算机系统a需要向计算机系统b传输数据对象,为了便于计算机系统a和计算机系统b之间的数据传输,计算机系统a需要将不同类型的数据对象进行序列化,得到序列化数据,序列化数据可以为二进制数据流。然后由计算机系统a将序列化数据传输至计算机系统b,计算机系统b对序列化数据进行反序列化,还原数据对象。
32.通过从不同的渠道获取待序列化的数据对象,并识别出该待序列化的数据对象对应的数据类型;其中,待序列化的数据对象的数据类型包括正数、负数、字节数组、单精度浮点数、双精度浮点数及字符串中的一种或几种。
33.例如,待序列化的数据对象为:bstp1, non,post, qos0,"/data/carry";待序列化的数据对象为:"accept",["binary/bsc","binary/bst"],"content-type","binary/bsc","length",72,"date", 1646817997;待序列化的数据对象为: "getcmd",187ed5333168,[69,10,19,ec,b0,4c,dc,ec,9d,e5,b8,16,7c,d4,25,86];待序列化的数据对象为:35, 1,100, 101,102,103,104,105, 106,107, 108,109,110,111,112, 113,114。
[0034]
在上述的例子中,通过不同的分隔符将待序列化的数据对象分割为对应的基本单元;分隔符包括有:逗号(comma)分隔符“,”,用于分隔一个本单元的分隔符;分号(semicolon)分隔符“;”,用于分隔一组基本单元的分隔符;括号分隔符“[]”,方括号中内的元素为一个元组,元组内的元素用逗号分隔符进行分隔;引号分隔符“"”,引号中内的字符为一个字符串,保留的关键字不用引号分隔。
[0035]
步骤s20,基于所述数据类型及所述数据类型对应的预设的编码格式,对所述待序列化的数据对象序列化,得到对应的序列化数据;其中,所述预设的编码格式用于表征针对不同数据类型的数据对象的序列化方式。
[0036]
在一实施例中,根据上述待序列化的数据对象的数据类型,确定该数据类型对应的预设编码格式,并根据该预设的编码格式对待序列化的数据对象序列化,得到对应的序列化数据;其中,预设的编码格式用于表征针对不同数据类型的数据对象的序列化方式。例如,如果我们要把一栋房子从一个地方运输到另一个地方去,序列化就是我把房子拆成一个个的砖块放到车子里,然后留下一张房子原来结构的图纸,反序列化就是我们把房子运输到了目的地以后,根据图纸把一块块砖头还原成房子原来面目的过程。
[0037]
此外,将本发明数据传输方法的编码格式与直接编码方式进行对比,可以检测到采用本发明数据传输方法所得到的序列化数据的字节长度小于直接编码方式所得到报文数据的字节长度,也即采用本发明数据传输方法,还可以减少发送数据的数据量。
[0038]
作为一示例,摘取一段报文内容作为原始报文数据,原始报文数据为:02801408004e0000000000010001010400af000000000000113000000000038400000bb8000000000000586862a00002f10c000000000000e7babfe8b7af310000000000000000000000000000000000;参考消息中定义可以解析出报文实际含义如下表所示:
采用bstp编码后报文内容如下:fc82800288508e0180808180818404af02808080b0448080840e80b82e8080a00a43060b8c4417808080fbe7babfe8b7af3100ff对比可以发现原始报文数据的长度为80字节,转换为本发明数据传输方法编码报文数据的长度为52字节。
[0039]
进一步地,在一实施例中,参照图3,步骤s20包括:步骤s21,根据所述数据类型,确定所述数据类型对应的预设的编码格式;其中,数据类型包括正数、负数、字节数组、单精度浮点数、双精度浮点数及字符串中的一种或几种,每一数据类型对应的特定的编码格式;步骤s22,根据预设的编码格式对所述待序列化的数据对象序列化,得到对应的序列化数据。
[0040]
在本实施例中,根据上述待序列化的数据对象的数据类型,确定该数据类型对应的预设编码格式。其中,数据类型包括正数、负数、字节数组、单精度浮点数、双精度浮点数及字符串中的一种或几种,每一数据类型对应的特定的编码格式。
[0041]
具体的,预设的编码格式包括但不限于:正数编码格式、负数编码格式、字节数组编码格式、单精度浮点数编码格式、双精度浮点数编码格式和字符串编码格式。
[0042]
在确定预设的编码格式后,通过该预设的编码格式后对待序列化的数据对象序列化,得到对应的序列化数据。从而提高数据的序列化效率。
[0043]
此外,在序列化数据中的预设位置还插入有每一数据类型对应的声明符标识。如,在待序列化的数据对象为正数的情况下,其对应的序列化数据中最前面的位置处插入有正数声明符(ac)。如,序列化数据为:fc ac 66 7d ,其中,fc 为正数声明符。
[0044]
参照表1,表1为序列化数据的保留关键字的说明。
[0045]
此外,由于上述编码具有自分割的特性,所以在待序列化的数据对象触发连续编码的情况下,若待序列化的数据对象中存在相同的数据类型,则自第二个相同数据类型的数据开始,可以省略编码类型标识符。参照图4所示,图4为连续编码的效果示意图;在图4中展示连续编码“meter”,“w/h”,2200,6400,486,12进行数据压缩的过程。
[0046]
步骤30,确定所述数据对象对应的接收设备,并将所述序列化数据存储和/或传输至所述接收设备。
[0047]
在本实施例中,确定待序列化的数据对象对应的接收设备,并将序列化数据存储和/或传输至接收设备;其中,接收设备包括计算机设备或系统;从而实现数据跨平台存储或网络数据传输。
[0048]
进一步地,在一实施例中,步骤s30之后,还包括:确定所述序列化数据所属的声明符标识,并基于所述声明符标识对应的预设的解码格式对所述序列化数据反序列化,得到所述序列化数据对应的数据对象。
[0049]
在本实施例中,在接收设备得到对应的序列化数据后,确定该序列化数据所述的声明标识符;再根据该声明标识符确定预设的解码格式,然后通过该预设的解码格式对所述序列化数据反序列化,得到所述序列化数据对应的数据对象。从而可实现将序列化数据通过反序列化操作恢复值原始的数据对象(也即,待序列化的数据对象)内容。
[0050]
其中,声明标识符可用于识别出每一序列化数据对应的数据类型,且该声明标识符位于序列化数据的前部;如,序列化数据为fc ac 66 7d,其中,fc为序列化数据的声明标识符,fc表示序列化数据为正数。
[0051]
每一声明标识符对应特定的(也即,唯一的)预设的解码格式。
[0052]
本实施例通过获取待序列化的数据对象,并确定待序列化的数据对象所属的数据类型;根据数据类型,确定数据类型对应的预设的编码格式,并根据预设的编码格式对待序列化的数据对象序列化,得到对应的序列化数据;确定待序列化的数据对象对应的接收设备,并将序列化数据存储和/或传输至接收设备;从而实现数据跨平台存储或网络数据传输。
[0053]
进一步地,基于本发明数据传输方法第一实施例,提出本发明数据传输方法第二实施例。
[0054]
数据传输方法的第二实施例与数据传输方法的第一实施例的区别在于本实施例是对步骤s22,根据预设的编码格式对所述待序列化的数据对象序列化,得到对应的序列化
数据的细化,参照图5,该步骤具体包括:步骤a10,在所述数据类型包括正数的情况下,确定所述正数对应的正数编码格式;步骤a20,基于所述正数编码格式,将所述待序列化的数据对象转换为对应的二进制数据,并按照预设的分解方式对所述二进制数据进行逆序分隔,得到正数分隔数据;其中,所述正数分隔数据中包括第一元组数据和多个第二元组数据;步骤a30,基于预设填充方式,分别填充所述第一元组数据和各个所述第二元组数据的高位,得到填充后的正数数据,并将所述填充后的正数数据转化为对应的十六进制格式数据;步骤a40,按照小端模式对所述十六进制格式数据进行排列,得到排列后的正数数据,并在所述排列后的正数数据的预设位置插入正数声明符,得到对应的序列化数据。
[0055]
在本实施例中,通过在数据类型包括正数的情况下,确定正数对应的正数编码格式;基于正数编码格式,将待序列化的数据对象转换为对应的二进制数据,并按照预设的分解方式对二进制数据进行逆序分隔,得到正数分隔数据;其中,正数分隔数据中包括第一元组数据和多个第二元组数据;基于预设填充方式,分别填充第一元组数据和各个第二元组数据的高位,得到填充后的正数数据,并将填充后的正数数据转化为对应的十六进制格式数据;按照小端模式对十六进制格式数据进行排列,得到排列后的正数数据,并在排列后的正数数据的预设位置插入正数声明符,得到对应的序列化数据;从而实现正数序列化、及提高正数序列化效率。
[0056]
以下将对各个步骤进行详细说明:步骤a10,在所述数据类型包括正数的情况下,确定所述正数对应的正数编码格式。
[0057]
在本实施例中,在确定待序列化的数据对象的数据类型为正数的情况下,确定正数对应的正数编码格式。进而可根据该正数编码格式对待序列化的数据对象序列化,从而实现正数序列化、及提高正数序列化效率。参照图6,图6为在待序列化的数据对象为正数的情况下的序列化示意图;图6为正数1030572编码的过程,最终得到编码为fcac667d,其中,fc为正数声明符。
[0058]
步骤a20,基于所述正数编码格式,将所述待序列化的数据对象转换为对应的二进制数据,并按照预设的分解方式对所述二进制数据进行逆序分隔,得到正数分隔数据;其中,所述正数分隔数据中包括第一元组数据和多个第二元组数据。
[0059]
在本实施例中,根据正数编码格式将待序列化的数据对象以二进制格式展开,转换为该待序列化的数据对象对应的二进制数据;而后,将二进制数据以6bit+n*7bit的方式进行逆序分隔,得到正数分隔数据;其中,正数分隔数据中包括第一元组数据和多个第二元组数据。其中,第一元组数据为6bit的数据,第二元组数据位7bit的数据。
[0060]
图6为在待序列化的数据对象为正数1030572编码的过程,将1030572编码的过程,最终得到编码为fcac667d。
[0061]
步骤

将1030572转为二进制数据为000011111011100110101100;步骤

将上述二进制数据按7n+6的方式分隔,分割后为:11111011100110101100。其中,“101100”为第一元组数据,“1111101”和“1111101”为第二元组数据。
[0062]
步骤a30,基于预设填充方式,分别填充所述第一元组数据和各个所述第二元组数据的高位,得到填充后的正数数据,并将所述填充后的正数数据转化为对应的十六进制格式数据。
[0063]
在本实施例中,在第一元组数据(也即,6bit数据)高位插入10,第二元组数据(也即,其余7bit数据)高位补0,得到填充后的正数数据,并将填充后的正数数据转化为对应的十六进制格式数据。
[0064]
图6为在待序列化的数据对象为正数1030572编码的过程,将1030572编码的过程,最终得到编码为fcac667d。
[0065]
步骤

补充高位,填充后的正数数据为:011111010110011010101100;步骤

将填充后的正数数据转为十六进制,十六进制格式数据为:7d66ac。
[0066]
步骤a40,按照小端模式对所述十六进制格式数据进行排列,得到排列后的正数数据,并在所述排列后的正数数据的预设位置插入正数声明符,得到对应的序列化数据。
[0067]
在本实施例中,在得到上述的十六进制格式数据后,将十六进制格式数据按照小端模式进行排列,得到排列后的正数数据;而后,在排列后的正数数据的最前面插入正数声明符,得到对应的序列化数据。其中,小端模式是指将十六进制格式数据按照低字节数据在前,高字节数据再后的排列方式;预设位置为排列后的正数数据的最前面。
[0068]
参照图6,图6为在待序列化的数据对象为正数1030572编码的过程,将1030572编码的过程,最终得到编码为fcac667d。
[0069]
步骤

将十六进制格式数据按照小端模式排列,排列后的正数数据为:ac667d;步骤

指明编码域,具体是在排列后的正数数据的预设位置插入正数声明符,序列化数据为:fc(正数声明符)ac667d。
[0070]
此外,在数据类型包括负数的情况下,确定负数对应的负数编码格式;而后,根据该负数编码格式对待序列化的数据对象序列化;具体是将待序列化的数据对象取反后转换为正数,并按照正数编码格式对取反后的待序列化的数据对象序列化,从而实现负数序列化、及提高负数序列化效率。
[0071]
参照图7,图7为在待序列化的数据对象为负数的情况下的序列化示意图;图7为负数(-708492)的编码过程,最终得到编码为fd8c3e56,其中,fd为负数声明符。
[0072]
步骤

将-708492取反(也即,取绝对值)并转二进制,二进制数据为10101100111110001100;步骤

将上述二进制数据按7n+6的方式分隔,并填充高位,填充后的负数数据为:010101100011111010001100。其中,“001100”为第一元组数据,“1010110”和“0111110”为第二元组数据;步骤

将填充后的正数数据转为十六进制,并按照小端模式排列,排列后的负数数据为:8c3e56;步骤

指明编码域,具体是在排列后的负数数据的预设位置插入负数声明符,序列化数据为:fd(负数声明符)8c3e56。
[0073]
在本实施例中,通过在数据类型包括正数的情况下,确定正数对应的正数编码格式;基于正数编码格式,将待序列化的数据对象转换为对应的二进制数据,并按照预设的分解方式对二进制数据进行逆序分隔,得到正数分隔数据;其中,正数分隔数据中包括第一元
组数据和多个第二元组数据;基于预设填充方式,分别填充第一元组数据和各个第二元组数据的高位,得到填充后的正数数据,并将填充后的正数数据转化为对应的十六进制格式数据;按照小端模式对十六进制格式数据进行排列,得到排列后的正数数据,并在排列后的正数数据的预设位置插入正数声明符,得到对应的序列化数据;从而实现正数序列化、及提高正数序列化效率。
[0074]
进一步地,基于本发明数据传输方法第一、二实施例,提出本发明数据传输方法第三实施例。
[0075]
数据传输方法的第三实施例与数据传输方法的第一、二实施例的区别在于本实施例是对步骤s22,根据预设的编码格式对所述待序列化的数据对象序列化,得到对应的序列化数据的细化,参照图8,该步骤具体包括:步骤b10,在所述数据类型包括字节数组的情况下,确定所述字节数组对应的字节数组编码格式;步骤b20,基于所述字节数组编码格式,按照小端模式将所述待序列化的数据对象进行排列,得到排列后的字节数组;步骤b30,根据预设的正数编码格式对所述排列后的字节数组,得到对应的序列化数据;其中,所述序列化数据的预设位置中插入有正数声明符、元组起始符和元组结束符。
[0076]
在本实施例中,通过在数据类型包括字节数组的情况下,确定字节数组对应的字节数组编码格式;基于字节数组编码格式,基于字节数组编码格式,按照小端模式将待序列化的数据对象进行排列,得到排列后的字节数组;根据预设的正数编码格式对排列后的字节数组序列化,得到对应的序列化数据;其中,所述序列化数据的预设位置中插入有正数声明符、元组起始符和元组结束符;从而实现字节数组序列化、及提高字节数组序列化效率。
[0077]
以下将对各个步骤进行详细说明:步骤b10,在所述数据类型包括字节数组的情况下,确定所述字节数组对应的字节数组编码格式。
[0078]
在本实施例中,在确定待序列化的数据对象的数据类型为字节数组的情况下,确定字节数组对应的字节数组编码格式。进而可根据该字节数组编码格式对待序列化的数据对象序列化,从而实现字节数组序列化、及提高字节数组序列化效率。参照图9,图9为在待序列化的数据对象为字节数组的情况下的序列化示意图;图9为字节数组(56h,1fh,30h,67h,9ah,6ch)编码的过程,最终得到编码为fcac967d00734c2636fe,其中,fc为正数声明符,ac为元组起始符,fe为元组结束符。
[0079]
步骤b20,基于所述字节数组编码格式,按照小端模式将所述待序列化的数据对象进行排列,得到排列后的字节数组。
[0080]
在本实施例中,根据字节数组编码格式,将待序列化的数据对象按照小端模式排列,排列后的字节数组;然后按照正数编码格式对多组分割数据传输,得到字节数组对应的序列化数据。
[0081]
图9为字节数组(56h,1fh,30h,67h,9ah,6ch)编码的过程,最终得到编码为fcac967d00734c2636fe,其中,fc为正数声明符,ac为元组起始符,fe为元组结束符。
[0082]
步骤

将待序列化的数据对象按照小端模式排列,排列后的字节数组为:6c9a67301f56;
步骤b30,根据预设的正数编码格式对所述排列后的字节数组序列化,得到对应的序列化数据;其中,所述序列化数据的预设位置中插入有正数声明符、元组起始符和元组结束符。
[0083]
在本实施例中,在得到排列后的字节数组后,根据正数编码格式对排列后的字节数组序列化,得到对应的序列化数据;其中,序列化数据的预设位置中插入有正数声明符、元组起始符和元组结束符。具体参照图9,图9为字节数组(56h,1fh,30h,67h,9ah,6ch)编码的过程,最终得到编码为fcac967d00734c2636fe,其中,fc为正数声明符,ac为元组起始符,fe为元组结束符。
[0084]
图9为字节数组(56h,1fh,30h,67h,9ah,6ch)编码的过程,最终得到编码为fcac967d00734c2636fe,其中,fc为正数声明符,ac为元组起始符,fe为元组结束符。
[0085]
步骤

将排列后的字节数组转二进制,二进制数据为0110110011011010011001110011000000001111101010110;步骤

将上述二进制数据按7n+6的方式分隔,并填充高位,填充后的字节数组为:001101100011011001001100011100110000000000111110110010110。其中,“010110”为第一元组数据,“0110110”、“0110110”、“1001100”、“1110011”、“0000000”、“001111101”和“010110”为第二元组数据;步骤

将填充后的字节数组转化为十六进制数据,并按照小端模式十六进制数据进行排列,排列后的字节数组为:967d00734c2636;步骤

指明编码域、编码起始、结束,具体是在排列后的负数数据的预设位置插入正数声明符、元组起始符和元组结束符,序列化数据为:fcac967d00734c2636fe,其中,fc为正数声明符,ac为元组起始符,fe为元组结束符。
[0086]
在本实施例中,在数据类型包括字节数组的情况下,确定字节数组对应的字节数组编码格式;基于字节数组编码格式,基于字节数组编码格式,按照小端模式将待序列化的数据对象进行排列,得到排列后的字节数组;根据预设的正数编码格式对排列后的字节数组序列化,得到对应的序列化数据;其中,所述序列化数据的预设位置中插入有正数声明符、元组起始符和元组结束符;从而实现字节数组序列化、及提高字节数组序列化效率。
[0087]
进一步地,基于本发明数据传输方法第一、二、三实施例,提出本发明数据传输方法第四实施例。
[0088]
数据传输方法的第四实施例与数据传输方法的第一、二、三实施例的区别在于本实施例是对步骤s22,根据预设的编码格式对所述待序列化的数据对象序列化,得到对应的序列化数据的细化,参照图10,该步骤具体包括:步骤c10,在所述数据类型包括浮点数的情况下,确定所述浮点数对应的浮点数编码格式;其中,所述浮点数包括单精度或双精度浮点数;步骤c20,基于所述浮点数编码格式,在内存按整型或长整型的方式读取所述待序列化的数据对象,并按照正数或负数的编码格式对所述待序列化的数据对象序列化,得到对应的序列化数据;其中,所述序列化数据的预设位置中插入有正数或负数的声明符。
[0089]
在本实施例中,通过在数据类型包括浮点数的情况下,确定浮点数对应的浮点数编码格式;其中,浮点数包括单精度或双精度浮点数;基于浮点数编码格式,在内存按整型或长整型的方式读取待序列化的数据对象,并按照正数或负数的编码格式对待序列化的数
据对象序列化,得到对应的序列化数据;其中,序列化数据的预设位置中插入有正数或负数的声明符;从而实现浮点数序列化、及提高浮点数序列化效率。
[0090]
以下将对各个步骤进行详细说明:步骤c10,在所述数据类型包括浮点数的情况下,确定所述浮点数对应的浮点数编码格式;其中,所述浮点数包括单精度或双精度浮点数。
[0091]
在本实施例中,在确定待序列化的数据对象的数据类型为浮点数的情况下,确定浮点数对应的浮点数编码格式。进而可根据该浮点数编码格式对待序列化的数据对象序列化,从而实现浮点数序列化、及提高浮点数序列化效率。
[0092]
其中,浮点数包括单精度浮点数或双精度浮点数;单精度浮点数长度为4个字节,在内存按整型的方式读取,然后按正数/负数方式处理;双精度浮点数长度为8个字节,在内存按长整型的方式读取,然后按正/负数方式处理。
[0093]
步骤c20,基于所述浮点数编码格式,在内存按整型或长整型的方式读取所述待序列化的数据对象,并按照正数或负数的编码格式对所述待序列化的数据对象序列化,得到对应的序列化数据;其中,所述序列化数据的预设位置中插入有正数或负数的声明符。
[0094]
在本实施例中,在确定待序列化的数据对象的数据类型为单精度浮点数的情况下,根据浮点数编码格式,在内存按整型的方式读取待序列化的数据对象,并按照正数或负数的编码格式对待序列化的数据对象序列化,得到对应的序列化数据;其中,序列化数据的预设位置中插入有正数或负数的声明符。
[0095]
如,根据浮点数编码格式,在内存按整型的方式读取待序列化的数据对象,并按照正数的编码格式对待序列化的数据对象序列化,得到对应的序列化数据;其中,序列化数据的预设位置中插入有正数声明符。
[0096]
根据浮点数编码格式,在内存按整型的方式读取待序列化的数据对象,并按照负数的编码格式对待序列化的数据对象序列化,得到对应的序列化数据;其中,序列化数据的预设位置中插入有负数声明符。
[0097]
在确定待序列化的数据对象的数据类型为双精度浮点数的情况下,根据浮点数编码格式,在内存按长整型的方式读取待序列化的数据对象,并按照正数或负数的编码格式对待序列化的数据对象序列化,得到对应的序列化数据;其中,序列化数据的预设位置中插入有正数或负数的声明符。
[0098]
在本实施例中,通过在数据类型包括浮点数的情况下,确定浮点数对应的浮点数编码格式;其中,浮点数包括单精度或双精度浮点数;基于浮点数编码格式,在内存按整型或长整型的方式读取待序列化的数据对象,并按照正数或负数的编码格式对待序列化的数据对象序列化,得到对应的序列化数据;其中,序列化数据的预设位置中插入有正数或负数的声明符;从而实现浮点数序列化、及提高浮点数序列化效率。
[0099]
进一步地,基于本发明数据传输方法第一、二、三、四实施例,提出本发明数据传输方法第五实施例。
[0100]
数据传输方法的第五实施例与数据传输方法的第一、二、三、四实施例的区别在于本实施例是对步骤s22,根据预设的编码格式对所述待序列化的数据对象序列化,得到对应
的序列化数据的细化,参照图11,该步骤具体包括:步骤d10,在所述数据类型包括字符串的情况下,确定所述字符串对应的字符串编码格式;步骤d20,基于所述字节数组编码格式,对所述待序列化的数据对象序列化,得到对应的序列化数据;其中,所述字节数组编码格式包括ascii编码或utf-8编码;所述序列化数据的预设位置中插入有字符声明符。
[0101]
本实施例通过在数据类型包括字符串的情况下,确定字符串对应的字符串编码格式;基于字节数组编码格式,对待序列化的数据对象序列化,得到对应的序列化数据;其中,字节数组编码格式包括ascii编码或utf-8编码;序列化数据的预设位置中插入有字符声明符;从而实现字符串序列化、及提高字符串序列化效率。
[0102]
以下将对各个步骤进行详细说明:步骤d10,在所述数据类型包括字符串的情况下,确定所述字符串对应的字符串编码格式。
[0103]
在本实施例中,在确定待序列化的数据对象的数据类型为字符串的情况下,确定字符串对应的字符串编码格式。进而可根据该字符串编码格式对待序列化的数据对象序列化,从而实现字符串序列化、及提高字符串序列化效率。
[0104]
步骤d20,基于所述字节数组编码格式,对所述待序列化的数据对象序列化,得到对应的序列化数据;其中,所述字节数组编码格式包括ascii编码或utf-8编码;所述序列化数据的预设位置中插入有字符声明符。
[0105]
在本实施例中,字符串支持ascii码或者utf-8编码,通过ascii码或者utf-8编码格式对待序列化的数据对象序列化,得到对应的序列化数据;其中,序列化数据的预设位置中插入有字符声明符。
[0106]
其中,字符串必须以00h结尾,如果字符串末尾没有00h(字符结束标识符),则需要补充00h表示字符串结束。编码时字符串无需做任何变化,仅需前面插入字符串标识符fbh。如下所示,将字符串”mantunsci”编码的过程。
[0107]
参照图12,图12为字符串”mantunsci”编码的过程,最终得到编码为fb6d616e746e73636900,其中,fb为字符串声明符,00为字符串结束标识符。
[0108]
在本实施例中,在数据类型包括字符串的情况下,确定字符串对应的字符串编码格式;基于字节数组编码格式,对待序列化的数据对象序列化,得到对应的序列化数据;其中,字节数组编码格式包括ascii编码或utf-8编码;序列化数据的预设位置中插入有字符声明符;从而实现字符串序列化、及提高字符串序列化效率。
[0109]
本发明还提供一种数据传输装置,参照图13,所述数据传输装置包括:确定模块10,用于接收待序列化的数据对象,并确定所述待序列化的数据对象所属的数据类型;编码模块20,用于基于所述数据类型及所述数据类型对应的预设的编码格式,对所述待序列化的数据对象序列化,得到对应的序列化数据;其中,所述预设的编码格式用于表征针对不同数据类型的数据对象的序列化方式;传输模块30,用于确定所述数据对象对应的接收设备,并将所述序列化数据存储和/或传输至所述接收设备。
[0110]
此外,本发明还提供一种计算机可读存储介质,其上存储有数据传输程序,数据传输程序被处理器执行时实现如上所述的数据传输方法的步骤。
[0111]
其中,在所述处理器上运行的数据传输程序被执行时所实现的方法可参照本发明数据传输方法各个实施例,此处不再赘述。
[0112]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0113]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0114]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0115]
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书与附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1