CN103297183B - 数据通信方法及装置 - Google Patents
数据通信方法及装置 Download PDFInfo
- Publication number
- CN103297183B CN103297183B CN201210055563.1A CN201210055563A CN103297183B CN 103297183 B CN103297183 B CN 103297183B CN 201210055563 A CN201210055563 A CN 201210055563A CN 103297183 B CN103297183 B CN 103297183B
- Authority
- CN
- China
- Prior art keywords
- data
- field
- type
- character string
- subtype
- 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
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明的实施例提供一种数据通信方法及装置,涉及通信技术领域,提供了一种新的数据格式,扩大了可传输的数据类型。发送端按照预设数据格式对待传输数据进行编码;发送端发送编码后的数据给接收端。接收端接收发送端发送的数据;所述接收端从所述接收到的数据中获取类型字段的取值;所述接收端根据所述类型字段的取值从数据部分中读取待传输数据。本发明实施例提供了一种新的数据格式,扩大了可传输的数据类型。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种数据通信方法及装置。
背景技术
TLV(Type-Length-Value,类型-长度-值)是一种数据存储格式,包括如下3个字段:
类型字段Type,一个二进制的值,用来表示该数据的类型。
长度字段Length,数据的实际长度,通常其单位为字节(Byte)。
数据存储字段Value,用于存储数据对象,长度非固定,由长度字段指定
现有技术采用TLV格式传输数据库时,具体很多优点。例如,可以在扫描的过程中,对于未知类型的数据,可以安全地跳过该数据;数据间可以以任意顺序存放而不干扰对其它数据的读取;数据读取的速度十分快等。
然而,对于数据结构较复杂的数据结构,例如Map类型或Vector类型等容器类型,采用TLV格式将无法实现传输。
发明内容
本发明的实施例提供一种数据通信方法及装置,提供了一种新的数据格式,扩大了可传输的数据类型。
为达到上述目的,本发明的实施例采用如下技术方案:
一方面,提供一种数据发送方法,包括:
发送端按照预设数据格式对待传输数据进行编码,所述预设数据格式包括用于表示待传输数据类型的类型字段和数据部分;
所述类型字段用于表示待传输数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
发送端发送编码后的数据给接收端。
一种数据存储方法,包括:
按照预设数据格式对待存储数据进行编码,所述预设数据格式包括用于表示待存储数据类型的类型字段和数据部分;
所述类型字段用于表示待存储数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
存储编码后的数据。
一种数据接收方法,包括:
接收端接收发送端发送的数据,所述数据由发送端按照预设数据格式对待传输数据进行编码后得出;
所述预设数据格式包括用于表示待传输数据类型的类型字段和数据部分;
所述类型字段用于表示待传输数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
所述接收端从所述接收到的数据中获取类型字段的取值;
所述接收端根据所述类型字段的取值从数据部分中读取待传输数据。
另一方面,还提供一种数据发送装置,包括:
编码模块,用于按照预设数据格式对待传输数据进行编码,所述预设数据格式包括用于表示待传输数据类型的类型字段和数据部分;
所述类型字段用于表示待传输数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
发送模块,用于发送编码后的数据给接收端。
一种数据存储装置,包括:
编码模块,用于按照预设数据格式对待存储数据进行编码,所述预设数据格式包括用于表示待存储数据类型的类型字段和数据部分;
所述类型字段用于表示待存储数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
存储模块,用于存储编码后的数据。
一种数据接收装置,包括:
接收模块,用于接收发送端发送的数据,所述数据由发送端按照预设数据格式对待传输数据进行编码后得出,所述预设数据格式包括用于表示待传输数据类型的类型字段和数据部分;
所述类型字段用于表示待传输数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
解码模块,用于从所述接收到的数据中获取类型字段的取值,根据所述类型字段的取值从数据部分中读取待传输数据。
与现有技术中对于数据结构较复杂的数据类型,采用TLV格式无法实现数据传输相比,由上述技术方案所描述的本发明实施例提供了一种新的数据格式,该数据格式包括用于表示待传输数据类型的类型字段和用于存储待传输数据的数据部分,所述类型字段表示的数据类型包括:整型数值类型、字符串类型、Vector类型和Map类型,可以实现对Vector类型和Map类型的数据传输,扩大了可传输的数据类型。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种数据发送方法的流程图;
图2为本发明实施例1提供的一种预设数据格式的示意图;
图3为本发明实施例1提供的一种数据存储方法的流程图;
图4为本发明实施例1提供的一种数据接收方法的流程图;
图5为本发明实施例1提供的一种传输整型数值的数据结构示意图;
图6为本发明实施例1提供的一种传输字符串的数据结构示意图;
图7为本发明实施例1提供的一种传输Vector类型数据的数据结构示意图;
图8为本发明实施例1提供的一种传输Map类型数据的数据结构示意图;
图9为本发明实施例2提供的一种数据发送装置的结构图;
图10为本发明实施例2提供的一种数据存储装置的结构图;
图11为本发明实施例2提供的一种数据接收装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
如图1所示,本发明实施例提供一种数据发送方法,包括:
101、发送端按照预设数据格式对待传输数据进行编码,所述预设数据格式包括用于表示待传输数据类型的类型字段和数据部分。
其中,所述类型字段用于表示待传输数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
本发明实施例中,将上述预设数据格式定义为CAnyValue,所述CAnyValue的结构如图2所示。其中,Type为用于表示待传输数据类型的类型字段,所述Type占用1个字节的存储空间;Value为用于存储待传输数据的数据部分。
102、发送端发送编码后的数据给接收端。
如图3所示,本发明实施例提供一种数据存储方法,包括:
301、按照预设数据格式对待存储数据进行编码,所述预设数据格式包括用于表示待存储数据类型的类型字段和数据部分;
所述类型字段用于表示待存储数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
302、存储编码后的数据。
如图4所示,本发明实施例提供一种数据接收方法,包括:
201、接收端接收发送端发送的数据,所述数据由发送端按照预设数据格式对待传输数据进行编码后得出。
其中,所述预设数据格式包括用于表示待传输数据类型的类型字段和数据部分;
所述类型字段用于表示待传输数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段。
202、所述接收端从所述接收到的数据中获取类型字段的取值。
203、所述接收端根据所述类型字段的取值从数据部分中读取待传输数据。
本发明实施例提供了一种新的数据格式,该数据格式包括用于表示待传输数据类型的类型字段和用于存储待传输数据的数据部分,所述类型字段表示的数据类型包括:整型数值类型、字符串类型、Vector类型和Map类型。与现有技术中对于数据结构较复杂的数据类型,采用TLV格式无法实现数据传输相比,可以实现对Vector类型和Map类型的数据传输,扩大了可传输的数据类型。
由于待传输数据具有不同的数据类型,因而,发送端发送待传输数据的方法和接收端接收该待传输数据的方法也不同。下面分别介绍当待传输数据为整型数值类型、字符串类型、Vector类型和Map类型时,数据的发送方法和接收方法的具体实现过程。
(一)待传输数据为整型数值的子类型
上述CAnyValue存放整型数值时对应的具体数据结构格式如图5所示。其中,Type为类型字段,用于表示待传输数据为整型数值的子类型,占用1个字节的存储空间;具体地,所述整型数值的子类型包括如下:
整型数值子类型一,用于表示整型数值占用1个字节的存储空间,例如,可以通过将Type的取值设置为0来表示整型数值子类型一;
整型数值子类型二,用于表示整型数值占用2个字节的存储空间,例如,可以通过将Type的取值设置为1来表示整型数值子类型二;
整型数值子类型三,用于表示整型数值占用4个字节的存储空间,例如,可以通过将Type的取值设置为2来表示整型数值子类型三;
整型数值子类型四,用于表示整型数值占用8个字节的存储空间,例如,可以通过将Type的取值设置为3来表示整型数值子类型四。
Value为数据字段,用来存放整型数值。
发送端在对该待传输的整型数值进行编码时,或者,存储装置在对该待存储的整型数值进行编码时,需要将所述类型字段的取值设为所述整型数值占用的存储空间字节数对应的整型数值子类型。亦即,发送端可以根据所述整型数值的大小选择合适所述整型数值的最小存储空间,从而有效节省存储空间,提高传输效率。
例如,待传输的整型数值为300时,传输时需要占用2个字节的空间,则在对该整型数值按照上述图4所示的数据结构进行编码时,将Type字段的取值设置为1,在Value字段中写入“300”。
接收端在接收数据时,首先读取上述类型字段(Type)的取值,当所述类型字段的取值表示的数据类型具体为整型数值子类型一时,从数据部分(Value)中读取1个字节的待传输数据,从所述1个字节中读出的数据即为待传输数据。
例如,当读取的Type的取值为0时,则从Value中读取1个字节的数据。
当所述类型字段的取值表示的数据类型具体为整型数值子类型二时,从数据部分中读取2个字节的数据,从所述2个字节中读出的数据即为待传输数据;
当所述类型字段的取值表示的数据类型具体为整型数值子类型三时,从数据部分中读取4个字节的数据,从所述4个字节中读出的数据即为待传输数据;
当所述类型字段的取值表示的数据类型具体为整型数值子类型四时,从数据部分中读取8个字节的数据,从所述8个字节中读出的数据即为待传输数据。
(二)待传输数据为字符串类型的子类型
上述CAnyValue存放字符串时对应的具体数据结构格式如图6所示。
其中,Type为类型字段,用于表示待传输数据为字符串类型的子类型。所述字符串类型的子类型包括如下:
字符串子类型一,用于表示字符串的长度的变量占用1个字节的存储空间,例如,可以通过将Type的取值设置为4来表示字符串子类型一。
字符串子类型二,用于表示字符串的长度的变量占用2个字节的存储空间,例如,可以通过将Type的取值设置为5来表示字符串子类型二。
字符串子类型三,用于表示字符串的长度的变量占用4个字节的存储空间,例如,可以通过将Type的取值设置为6来表示字符串子类型三。
Size为长度字段,用于表示字符串的长度,存有表示字符串的长度的变量。
Value为数据字段,用于存储字符串。
发送端在对待传输的字符串进行编码时,或者,存储装置在对该待存储的字符串进行编码时,需要将所述类型字段的取值设为用于表示待传输字符串的长度的变量所占存储空间对应的字符串子类型。
例如,待传输的字符串为“happy”,字符串长度为5,表示所述字符串长度的变量占用1个字节,则将上述Type字段的值设为4,在Size字段中写入“5”,在Value字段中写入“happy”。
接收端在接收数据时,首先读取类型字段(Type)的值,当所述类型字段的取值表示的数据类型为字符串子类型一时,从数据部分中的长度字段(Size)读取1个字节的数据,所述从1个字节中读出的数据即为字符串的长度,再从数据部分中的数据字段(Value)读取指定个数的字节的数据,所述指定个数为所述字符串的长度,所述从指定个数的字节中读出的数据即为待传输数据;
当所述类型字段的取值表示的数据类型为字符串子类型二时,从数据部分中的长度字段读取2个字节的数据,所述从2个字节中读出的数据即为字符串的长度,再从数据部分中的数据字段读取指定个数的字节的数据,所述指定个数为所述字符串的长度,所述从指定个数的字节中读出的数据即为待传输数据;
当所述类型字段的取值表示的数据类型为字符串子类型三时,从数据部分中的长度字段读取4个字节的数据,所述从4个字节中读出的数据即为字符串的长度,再从数据部分中的数据字段读取指定个数的字节的数据,所述指定个数为所述字符串的长度,所述从指定个数的字节中读出的数据即为待传输数据。
(三)待传输数据为Vector类型数据
上述CAnyValue存放Vector类型数据时对应的具体数据结构格式如图7所示。
其中,Type为类型字段,用来表示待传输数据的类型为Vector类型,占用1个字节。例如,可以通过将所述Type的取值设为7来表示待传输数据的类型为Vector类型。
Size为长度字段,用于表示元素数量(定义为N),占用4个字节;
Value1为第1个元素字段,用于存储按照所述预设数据格式对子数据1进行编码后的数据;
Value2为第2个元素字段,用于存储按照所述预设数据格式对子数据2进行编码后的数据;
以此类推,
ValueN为第N个元素字段,用于存储按照所述预设数据格式对子数据N进行编码后的数据;
所有所述元素字段中存储的子数据的总和为待传输的Vector类型数据,所述子数据为以下任一种类型的数据:整型数值类型、字符串类型、Vector类型和Map类型。
发送端在对Vector类型数据编码时,或者,存储装置在对Vector类型数据进行编码时,将Type的值设为7,在Size中写入元素数量N的值,在每个Value中写入对应的子数据进行编码后的数据。
接收端接收数据时,当所述类型字段的取值表示的数据类型为Vector类型时,从数据部分中的长度字段读取元素数量,再依次从数据部分中的每个元素字段读取子数据,从每个元素字段中读出的子数据的总和即为待传输数据。
当所述子数据的类型为整型数值时,则按照上述整型数值类型的数据读取方法进行读取,当所述子数据的类型为字符串数值时,则按照上述字符串类型的数据读取方法进行读取,以此类推。
(四)待传输数据为Map类型数据
上述CAnyValue存放Map类型数据时对应的具体数据结构格式如图8所示。
其中,,Type为类型字段,用来表示待传输数据的类型为Map类型,占用1个字节。例如,可以通过将所述Type的取值设为8来表示待传输数据的类型为Map类型。
Size为长度字段,用于表示元素数量(定义为N),占用4个字节;
Value1,Value2……ValueN分别为第1个元素字段,第2个元素字段……第N个元素字段。
每个元素字段包括用于标识子数据的键(key)字段和数据字段;
所述键字段包括用于表示键值类型的键类型(KeyType)字段和用于存放键值的键数据(KeyValue)字段,所述键类型包括整型数值类型和字符串类型;
具体地,当所述键字段中存放的键值为整型数值时,可以将KeyType设为201,用于表示KeyValue中存放的键值占1个字节的存储空间;将KeyType设为202,用于表示KeyValue中存放的键值占2个字节的存储空间;将KeyType设为203,用于表示KeyValue中存放的键值占4个字节的存储空间;将KeyType设为204,用于表示KeyValue中存放的键值占8个字节的存储空间。
具体地,当所述键字段中存放的键值为字符串时,本发明实施例中在键字段中支持的字符串长度不超过100,亦即,0<KeyType的取值<100,所述KeyType的值即为字符串的长度。当字符串长度超过100时,将该字符串截断分成两个字符串进行处理。
所述每个元素字段的数据字段用于存储按照所述预设数据格式对子数据进行编码后的数据,所有所述元素字段的数据字段中存储的子数据的总和为Map类型数据,所述子数据为以下任一种类型的数据:整型数值类型、字符串类型、Vector类型和Map类型。
发送端在对Map类型数据编码时,或者,存储装置在对Map类型数据进行编码时,将Type的值设为8,在在Size中写入元素数量N的值,在每个Value中写入对应的键值和子数据进行编码后的数据。
接收端在接收数据时,当所述类型字段的取值表示的数据类型为Map类型时,从数据部分中的长度字段读取元素数量,针对每个元素字段均执行如下操作:
1)、从键字段读取数据,具体地,先从KeyType读取数据,并根据KeyType的值从KeyValue中读取键值;
2)、从数据字段读取数据,所述从键字段读出的数据和数据字段读出的数据的总和为待传输数据;
3)、将键字段读取的数据与数据字段读取的数据进行组合并保存。
例如,可以将从键字段读取的数据与数据字段读取的数据组成一个pair,插入到stl(C++标准库)中的map。
需要说明的是,在传输上述Map类型数据时,通信双方仅需要协商Key的值,不需要协商数据的存储位置等等其他格式,而现有技术中采用TLV传输数据时,需要协商传输数据采用的协议的具体格式,例如,数据的存储位置等。本发明简化了传输数据的操作。
在访问上述Map类型数据时,可以通过键字段中键值访问到所述数据字段中的数据。
实施例2:
如图9所示,本发明实施例提供一种数据发送装置,包括:
编码模块11,用于按照预设数据格式对待传输数据进行编码,所述预设数据格式包括用于表示待传输数据类型的类型字段和数据部分;
所述类型字段用于表示待传输数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
发送模块12,用于发送编码后的数据给接收端。
如图10所示,本发明实施例还提供一种数据存储装置,包括:
编码模块31,用于按照预设数据格式对待存储数据进行编码,所述预设数据格式包括用于表示待存储数据类型的类型字段和数据部分;
所述类型字段用于表示待存储数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
存储模块32,用于存储编码后的数据。
如图11所示,本发明实施例还提供一种数据接收装置,包括:
接收模块21,用于接收发送端发送的数据,所述数据由发送端按照预设数据格式对待传输数据进行编码后得出;
所述预设数据格式包括用于表示待传输数据类型的类型字段和数据部分;
所述类型字段用于表示待传输数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
解码模块22,用于从所述接收到的数据中获取类型字段的取值;
所述解码模块22还用于根据所述类型字段的取值从数据部分中读取待传输数据。
进一步地,所述解码模块22具体用于当所述类型字段的取值表示的数据类型具体为整型数值子类型一时,从数据部分中读取1个字节的数据,从所述1个字节中读出的数据即为待传输数据;
所述解码模块22具体用于当所述类型字段的取值表示的数据类型具体为整型数值子类型二时,从数据部分中读取2个字节的数据,从所述2个字节中读出的数据即为待传输数据;
所述解码模块22具体用于当所述类型字段的取值表示的数据类型具体为整型数值子类型三时,从数据部分中读取4个字节的数据,从所述4个字节中读出的数据即为待传输数据;
所述解码模块22具体用于当所述类型字段的取值表示的数据类型具体为整型数值子类型四时,从数据部分中读取8个字节的数据,从所述8个字节中读出的数据即为待传输数据。
进一步地,所述解码模块22具体用于当所述类型字段的取值表示的数据类型为字符串子类型一时,从数据部分中的长度字段读取1个字节的数据,所述从1个字节中读出的数据即为字符串的长度,再从数据部分中的数据字段读取指定个数的字节的数据,所述指定个数为所述字符串的长度,所述从指定个数的字节中读出的数据即为待传输数据;
所述解码模块22具体用于当所述类型字段的取值表示的数据类型为字符串子类型二时,从数据部分中的长度字段读取2个字节的数据,所述从2个字节中读出的数据即为字符串的长度,再从数据部分中的数据字段读取指定个数的字节的数据,所述指定个数为所述字符串的长度,所述从指定个数的字节中读出的数据即为待传输数据;
所述解码模块22具体用于当所述类型字段的取值表示的数据类型为字符串子类型三时,从数据部分中的长度字段读取4个字节的数据,所述从4个字节中读出的数据即为字符串的长度,再从数据部分中的数据字段读取指定个数的字节的数据,所述指定个数为所述字符串的长度,所述从指定个数的字节中读出的数据即为待传输数据。
进一步地,所述解码模块22具体用于当所述类型字段的取值表示的数据类型为Vector类型时,从数据部分中的长度字段读取元素数量,再依次从数据部分中的每个元素字段读取子数据,从每个元素字段中读出的子数据的总和即为待传输数据。
进一步地,所述解码模块22具体用于当所述类型字段的取值表示的数据类型为Map类型时,从数据部分中的长度字段读取元素数量,再依次从数据部分中的每个元素字段的键字段和数据字段读取数据,所述从键字段读出的数据和数据字段读出的数据的总和为待传输数据。
进一步地,当待传输数据为Map类型数据时,所述数据接收装置(图未示)还包括:处理模块,用于将从每个元素字段中的键字段读取的数据与数据字段读取的数据进行组合并保存。
与现有技术中对于数据结构较复杂的数据类型,采用TLV格式无法实现数据传输相比,由上述技术方案所描述的本发明实施例提供了一种新的数据格式,该数据格式包括用于表示待传输数据类型的类型字段和用于存储待传输数据的数据部分,所述类型字段表示的数据类型包括:整型数值类型、字符串类型、Vector类型和Map类型,可以实现对Vector类型和Map类型的数据传输,扩大了可传输的数据类型。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种数据发送方法,其特征在于,包括:
发送端按照预设数据格式对待传输数据进行编码,所述预设数据格式包括用于表示待传输数据类型的类型字段和数据部分;
所述类型字段用于表示待传输数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
发送端发送编码后的数据给接收端。
2.一种数据存储方法,其特征在于,包括:
按照预设数据格式对待存储数据进行编码,所述预设数据格式包括用于表示待存储数据类型的类型字段和数据部分;
所述类型字段用于表示待存储数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
存储编码后的数据。
3.根据权利要求1或2所述的方法,其特征在于,所述整型数值的子类型包括:整型数值子类型一,用于表示整型数值占用1个字节的存储空间;整型数值子类型二,用于表示整型数值占用2个字节的存储空间;整型数值子类型三,用于表示整型数值占用4个字节的存储空间;整型数值子类型四,用于表示整型数值占用8个字节的存储空间;
当所述待传输或待存储数据为整型数值的子类型时,所述数据部分包括用于存储所述整型数值的数据字段,所述类型字段的取值为所述整型数值占用的存储空间字节数对应的整型数值子类型。
4.根据权利要求1或2所述的方法,其特征在于,所述字符串类型的子类型包括:字符串子类型一,用于表示字符串的长度的变量占用1个字节的存储空间;字符串子类型二,用于表示字符串的长度的变量占用2个字节的存储空间;字符串子类型三,用于表示字符串的长度的变量占用4个字节的存储空间;
当所述待传输或待存储数据为字符串时,所述数据部分由用于表示字符串长度的长度字段和用于存储字符串的数据字段组成;所述类型字段的取值为用于表示待传输字符串的长度的变量所占存储空间对应的字符串子类型。
5.根据权利要求1或2所述的方法,其特征在于,当待传输或待存储数据为Vector类型数据时,所述数据部分由用于表示元素数量的长度字段和元素字段组成,所述每个元素字段用于存储按照所述预设数据格式对子数据进行编码后的数据,所有所述元素字段中存储的子数据的总和为Vector类型数据,所述子数据为以下任一种类型的数据:整型数值类型、字符串类型、Vector类型和Map类型。
6.根据权利要求1或2所述的方法,其特征在于,当待传输或待存储数据为Map类型时,所述数据部分由用于表示元素数量的长度字段和用于存储数据的元素字段组成;所述每个元素字段包括用于标识子数据的键(key)字段和数据字段;
所述键字段包括用于表示键值类型的键类型KeyType字段和用于存放键值的键数据(KeyValue)字段,所述键类型包括整型数值类型和字符串类型,当所述键值为字符串时,所述KeyType的取值为字符串的长度;
所述每个元素字段的数据字段用于存储按照所述预设数据格式对子数据进行编码后的数据,所有所述元素字段的数据字段中存储的子数据的总和为Map类型数据,所述子数据为以下任一种类型的数据:整型数值类型、字符串类型、Vector类型和Map类型。
7.一种数据接收方法,其特征在于,包括:
接收端接收发送端发送的数据,所述数据由发送端按照预设数据格式对待传输数据进行编码后得出;
所述预设数据格式包括用于表示待传输数据类型的类型字段和数据部分;
所述类型字段用于表示待传输数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
所述接收端从所述接收到的数据中获取类型字段的取值;
所述接收端根据所述类型字段的取值从数据部分中读取待传输数据。
8.根据权利要求7所述的方法,其特征在于,所述整型数值的子类型包括:整型数值子类型一,用于表示整型数值占用1个字节的存储空间;整型数值子类型二,用于表示整型数值占用2个字节的存储空间;整型数值子类型三,用于表示整型数值占用4个字节的存储空间;整型数值子类型四,用于表示整型数值占用8个字节的存储空间;
所述接收端根据所述类型字段的取值从数据部分中读取待传输数据,包括:
当所述类型字段的取值表示的数据类型具体为整型数值子类型一时,从数据部分中读取1个字节的数据,从所述1个字节中读出的数据即为待传输数据;
当所述类型字段的取值表示的数据类型具体为整型数值子类型二时,从数据部分中读取2个字节的数据,从所述2个字节中读出的数据即为待传输数据;
当所述类型字段的取值表示的数据类型具体为整型数值子类型三时,从数据部分中读取4个字节的数据,从所述4个字节中读出的数据即为待传输数据;
当所述类型字段的取值表示的数据类型具体为整型数值子类型四时,从数据部分中读取8个字节的数据,从所述8个字节中读出的数据即为待传输数据。
9.根据权利要求7所述的方法,其特征在于,
所述字符串的子类型包括:字符串子类型一,用于表示字符串的长度的变量占用1个字节的存储空间;字符串子类型二,用于表示字符串的长度的变量占用2个字节的存储空间;字符串子类型三,用于表示字符串的长度的变量占用4个字节的存储空间;
所述接收端根据所述类型字段的取值从数据部分中读取待传输数据,包括:
当所述类型字段的取值表示的数据类型为字符串子类型一时,从数据部分中的长度字段读取1个字节的数据,所述从1个字节中读出的数据即为字符串的长度,再从数据部分中的数据字段读取指定个数的字节的数据,所述指定个数为所述字符串的长度,所述从指定个数的字节中读出的数据即为待传输数据;
当所述类型字段的取值表示的数据类型为字符串子类型二时,从数据部分中的长度字段读取2个字节的数据,所述从2个字节中读出的数据即为字符串的长度,再从数据部分中的数据字段读取指定个数的字节的数据,所述指定个数为所述字符串的长度,所述从指定个数的字节中读出的数据即为待传输数据;
当所述类型字段的取值表示的数据类型为字符串子类型三时,从数据部分中的长度字段读取4个字节的数据,所述从4个字节中读出的数据即为字符串的长度,再从数据部分中的数据字段读取指定个数的字节的数据,所述指定个数为所述字符串的长度,所述从指定个数的字节中读出的数据即为待传输数据。
10.根据权利要求7所述的方法,其特征在于,所述接收端根据所述类型字段的取值从数据字段中读取待传输数据,包括:
当所述类型字段的取值表示的数据类型为Vector类型时,从数据部分中的长度字段读取元素数量,再依次从数据部分中的每个元素字段读取子数据,从每个元素字段中读出的子数据的总和即为待传输数据。
11.根据权利要求7所述的方法,其特征在于,所述接收端根据所述类型字段的取值从数据字段中读取待传输数据,包括:
当所述类型字段的取值表示的数据类型为Map类型时,从数据部分中的长度字段读取元素数量,再依次从数据部分中的每个元素字段的键字段和数据字段读取数据,所述从键字段读出的数据和数据字段读出的数据的总和为待传输数据。
12.根据权利要求11所述的方法,其特征在于,还包括:
将从每个元素字段中的键字段读取的数据与数据字段读取的数据进行组合并保存。
13.一种数据发送装置,其特征在于,包括:
编码模块,用于按照预设数据格式对待传输数据进行编码,所述预设数据格式包括用于表示待传输数据类型的类型字段和数据部分;
所述类型字段用于表示待传输数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
发送模块,用于发送编码后的数据给接收端。
14.一种数据存储装置,其特征在于,包括:
编码模块,用于按照预设数据格式对待存储数据进行编码,所述预设数据格式包括用于表示待存储数据类型的类型字段和数据部分;
所述类型字段用于表示待存储数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
存储模块,用于存储编码后的数据。
15.一种数据接收装置,其特征在于,包括:
接收模块,用于接收发送端发送的数据,所述数据由发送端按照预设数据格式对待传输数据进行编码后得出,所述预设数据格式包括用于表示待传输数据类型的类型字段和数据部分;
所述类型字段用于表示待传输数据类型为整型数值的子类型、字符串类型的子类型、Vector类型或Map类型,所述整型数值的子类型用于表示整型数值占用的存储空间,所述字符串类型的子类型用于表示字符串的长度的变量所占存储空间;
所述数据部分包括整型数值的数据字段、字符串长度的长度字段和字符串的数据字段、Vector元素数量的长度字段和Vector元素字段、或,Map元素数量的长度字段和Map元素字段;
解码模块,用于从所述接收到的数据中获取类型字段的取值,根据所述类型字段的取值从数据部分中读取待传输数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210055563.1A CN103297183B (zh) | 2012-03-05 | 2012-03-05 | 数据通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210055563.1A CN103297183B (zh) | 2012-03-05 | 2012-03-05 | 数据通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103297183A CN103297183A (zh) | 2013-09-11 |
CN103297183B true CN103297183B (zh) | 2016-02-03 |
Family
ID=49097557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210055563.1A Active CN103297183B (zh) | 2012-03-05 | 2012-03-05 | 数据通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103297183B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123364A (zh) * | 2014-07-21 | 2014-10-29 | 上海迈循信息科技有限公司 | 一种移动终端发送和接收数据的方法及装置 |
CN106156037B (zh) * | 2015-03-26 | 2019-11-12 | 深圳市腾讯计算机系统有限公司 | 数据处理方法、装置及系统 |
WO2016155510A1 (en) * | 2015-03-28 | 2016-10-06 | Huawei Technologies Co., Ltd. | Apparatus and method for creating user defined variable size tags on records in rdbms |
CN107066116B (zh) * | 2017-04-13 | 2021-07-30 | 海信视像科技股份有限公司 | 字符串生成方法、字符解析方法及装置 |
CN110891042A (zh) * | 2018-09-07 | 2020-03-17 | 上海擎感智能科技有限公司 | 通信系统和数据发送与接收方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1933479A (zh) * | 2005-09-16 | 2007-03-21 | 华为技术有限公司 | 通信系统中传输数据的方法及其系统 |
CN101179580A (zh) * | 2007-12-12 | 2008-05-14 | 北京北方烽火科技有限公司 | 一种用于实现WiMAX系统消息编解码的方法 |
CN101599890A (zh) * | 2008-06-06 | 2009-12-09 | 中兴通讯股份有限公司 | 一种通信系统中的数据传输系统和方法 |
WO2010028167A1 (en) * | 2008-09-03 | 2010-03-11 | Wi-Lan, Inc. | Mbs with outer coding and adjusted frame reference |
-
2012
- 2012-03-05 CN CN201210055563.1A patent/CN103297183B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1933479A (zh) * | 2005-09-16 | 2007-03-21 | 华为技术有限公司 | 通信系统中传输数据的方法及其系统 |
CN101179580A (zh) * | 2007-12-12 | 2008-05-14 | 北京北方烽火科技有限公司 | 一种用于实现WiMAX系统消息编解码的方法 |
CN101599890A (zh) * | 2008-06-06 | 2009-12-09 | 中兴通讯股份有限公司 | 一种通信系统中的数据传输系统和方法 |
WO2010028167A1 (en) * | 2008-09-03 | 2010-03-11 | Wi-Lan, Inc. | Mbs with outer coding and adjusted frame reference |
Non-Patent Citations (1)
Title |
---|
《基于ASN.1的通用编解码方案的设计与实现》;陈军成;《中国科学技术大学硕士学位论文》;20090511;第3-5章 * |
Also Published As
Publication number | Publication date |
---|---|
CN103297183A (zh) | 2013-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103297183B (zh) | 数据通信方法及装置 | |
US9088403B1 (en) | Identification codewords for a rate-adapted version of a data stream | |
CN101515841B (zh) | 一种基于RapidIO协议的数据包传输的方法、设备和系统 | |
CN104123364A (zh) | 一种移动终端发送和接收数据的方法及装置 | |
CN109743765A (zh) | 数据处理方法、装置、可穿戴设备及计算机可读存储介质 | |
CN103077149A (zh) | 一种数据传输方法和系统 | |
CN104811747A (zh) | 一种视频转码方法及装置 | |
CN103812610B (zh) | 一种数据通信方法、终端及信息安全设备 | |
CN101398807A (zh) | 解压移动终端压缩包的方法和装置 | |
CN103870511A (zh) | 基于共享内存的信息查询设备及方法 | |
CN102098510B (zh) | 解码、编码音视频数据的方法及装置 | |
CN109525360A (zh) | 极化码的速率匹配的方法和装置 | |
CN112770286B (zh) | 一种传感器的数据处理方法、装置和计算机设备 | |
CN104539700B (zh) | 追踪定位系统及信息传输编码方法 | |
CN101404797B (zh) | 长短消息的存储方法、存储管理装置以及存储系统 | |
CN104484619A (zh) | 一种通过应用模块访问智能卡文件系统的方法 | |
CN104717032B (zh) | 一种适用于afdx网络数据透明传输的编解码方法 | |
CN101894282A (zh) | 大量数据在rfid电子标签的存取方法 | |
WO2018228589A1 (zh) | 一种编码方法、无线设备和芯片 | |
CN107026888B (zh) | 大容量数据传送装置及方法 | |
WO2022042259A1 (zh) | 一种无线通信的方法及装置 | |
CN101499854B (zh) | 一种光纤信号与sas信号相互转换数据的方法 | |
CN102594371B (zh) | 一种Turbo编码交织处理的方法及装置 | |
CN109062856B (zh) | 计算处理装置和方法、电子设备 | |
US20190020743A1 (en) | Data transmitting apparatus, data receiving apparatus and method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |