CN101277161A - 一种电子服务指南数据的序列化及反序列化方法 - Google Patents
一种电子服务指南数据的序列化及反序列化方法 Download PDFInfo
- Publication number
- CN101277161A CN101277161A CNA2008100663767A CN200810066376A CN101277161A CN 101277161 A CN101277161 A CN 101277161A CN A2008100663767 A CNA2008100663767 A CN A2008100663767A CN 200810066376 A CN200810066376 A CN 200810066376A CN 101277161 A CN101277161 A CN 101277161A
- Authority
- CN
- China
- Prior art keywords
- data
- type
- value
- sub
- character string
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种电子服务指南数据的序列化及反序列化方法,序列化方法中,首先,保存数据的预定义类型值;然后,保存所述数据的简单类型子成员的数据值及复杂类型子成员的地址值;最后,依照所述复杂类型子成员的顺序,根据其数据类型是结构体类型、联合类型或字符串类型采用相应的数据保存方式对其进行保存。本发明所述技术方案实现了电子服务指南数据的快速保存与恢复。
Description
技术领域
本发明涉及一种数据的序列化及反序列化方法,尤其是一种DVB-H(Digital Video Broadcasting-Handheld,手持数字电视广播)网络中的ESG(Electronic Service Guide,电子服务指南)数据的序列化及反序列化方法。
背景技术
随着3G技术在全球范围内的普及,越来越多的用户开始通过3G网络观看手机电视。在目前手机电视的主流标准中,DVB-H是欧洲数字电视广播标准化团体组织为通过地面数字广播网络向便携/手持终端提供多媒体业务所制定的传输标准,其网络建设费用小、单向广播、不占用移动通讯网络的双向带宽,可以使用户以极低的价格随时、随地、随意地观看电视,有着广泛的商用前景。用户在使用支持DVB-H的手持设备观看电视的过程中,首先要将ESG数据接收下来显示为节目清单,然后才能播放。DVB-H发射塔以比较慢的速率发射ESG数据包,由于ESG数据的特殊性,导致用户第一次开机后必须长时间等待手持设备接收数据,尤其是当ESG数据量很大内容很多时,用户等待的时间更长。若是用户在一段时间内较频繁地重启手持设备接收电视,每次用户就必须等待很长的时间来接收ESG数据并显示为节目清单供其播放,这对用户来说是无法忍受的,同时,也使手持设备消耗掉过多的终端电池能量。
针对上述问题,可以通过对ESG数据的序列化及反序列化来缩短用户的等待时间。即在用户第一次接收解析完ESG数据后将这些ESG数据序列化保存到终端设备的本地文件中,当用户再次启动终端设备观看电视时只需要从本地文件中将ESG数据反序列化恢复到内存中,以显示为节目清单供播放使用。ESG数据为基本结构体类型数据,目前,还未有相应的序列化及反序列化方法来实现ESG数据的快速保存与恢复。
发明内容
本发明要解决的技术问题是提供一种ESG数据的序列化及反序列化方法,实现了ESG数据的快速保存与恢复。
本发明解决其技术问题所采用的技术方案是:
一种ESG数据的序列化方法,包括以下步骤:
a、保存数据的预定义类型值;
b、保存所述数据的简单类型子成员的数据值及复杂类型子成员的地址值;
c、依照所述复杂类型子成员的顺序,根据其数据类型是结构体类型、联合类型或字符串类型采用相应的数据保存方式对其进行保存。
上述方案中,所述步骤a之前还包括以下步骤:判断所述数据是否为空值,若是,保存空类型值并结束序列化流程,否则,进入所述步骤a。
上述方案中,所述步骤c中的复杂类型子成员为结构体类型数据时,通过以下步骤对其进行保存:
c11、保存所述结构体类型数据的预定义类型值;
c12、保存所述结构体类型数据的简单类型子成员的数据值及复杂类型子成员的地址值;
c13、依照所述结构体类型数据复杂类型子成员的顺序,依据其数据类型是结构体类型、联合类型或字符串类型采用相应的数据保存方式对其进行保存。
上述方案中,所述步骤c中的复杂类型子成员为联合类型数据时,通过以下步骤对其进行保存:
c21、保存所述联合类型数据的预定义类型值;
c22、所述联合类型数据保存的数据为简单类型数据时,保存其数据值;所述联合类型数据保存的数据为复杂类型数据时,根据其数据类型是结构体类型、联合类型或字符串类型采用相应的数据保存方式对其进行保存。
上述方案中,所述步骤c中的复杂类型子成员为字符串类型数据时,通过以下步骤对其进行保存:
c31、保存所述字符串类型数据的预定义类型值;
c32、保存所述字符串类型数据的长度值;
c33、保存所述字符串类型数据的数据值;
c34、保存空类型值。
一种ESG数据的反序列化方法,包括以下步骤:
A、数据的类型值为电子服务指南数据类型值时,将所述数据的简单类型子成员的数据值及复杂类型子成员的地址值读取到为所述数据分配的内存中;
B、依照所述复杂类型子成员的顺序,根据其数据类型值是结构体类型值、联合类型值或字符串类型值采用相应的数据读取方式将其读取到所述内存中。
上述方案中,所述步骤A之前还包括以下步骤:判断所述数据的类型值是否为空类型值,若是,在所述内存中保存空值并结束反序列化流程,否则,进入所述步骤A。
上述方案中,所述步骤B中的复杂类型子成员的数据类型值为结构体类型值时,通过以下步骤将其读取到所述内存中:
B11、将所述结构体类型数据的简单类型子成员的数据值及复杂类型子成员的地址值读取到所述内存中;
B12、依照所述结构体类型数据复杂类型子成员的顺序,依据其数据类型值是结构体类型值、联合类型值或字符串类型值采用相应的数据读取方式将其读取到所述内存中。
上述方案中,所述步骤B中的复杂类型子成员的数据类型值为联合类型值时,若所述联合类型数据保存的数据为简单类型数据,将其数据值读取到所述内存中;若所述联合类型数据保存的数据为复杂类型数据,则根据其数据类型值是结构体类型值、联合类型值或字符串类型值采用相应的数据读取方式将其读取到所述内存中。
上述方案中,所述步骤B中的复杂类型子成员的数据类型值为字符串类型值时,通过以下步骤将其读取到所述内存中:
B31、将所述字符串类型数据的长度值读取到所述内存中;
B32、将所述字符串类型数据的数据值读取到所述内存中;
B33、将空类型值读取到所述内存中。
本发明的有益效果主要表现在:本发明提供的技术方案提出了一种ESG数据的序列化及反序列化方法,实现了ESG数据的快速保存与恢复,可以缩短用户使用手持设备接收数字电视过程中的等待时间。
附图说明
图1为本发明ESG数据的序列化方法流程图;
图2为本发明ESG数据的反序列化方法流程图。
具体实施方式
下面结合附图对本发明作进一步的描述。
实际操作过程中,可以如表1对ESG数据通用结构体进行定义:
通用数据类型 | 语法声明 |
结构体类型 | typedef struct T_ESGStruct_s{/*简单类型*/SimpType1 varSimpType1;SimpType2 varSimpType2;…SimpTypeN varSimpTypeN;//枚举类型EnumType1 varEnumType1;EnumType2 varEnumType2;…EnumTypeN varEnumTypeN;/*复杂类型*///结构体类型StructType1_s *pVarStructType1;StructType2_s *pVarStructType2;…StructTypeN_s *pVarStructTypeN;//联合类型UnionStructType1 *pVarUnionStructType1;UnionStructType2 *pVarUnionStructType2; |
…UnionStructTypeN *pVarUnionStructTypeN;//字符串类型char*uint8 *pCharType1;uint8 *pCharType2;…uint8 *pCharTypeN;//链表前驱及后继节点struct T_ESGStruct_s *pPre;struct T_ESGStruct_s *pNext;}ESGStruct_s; | |
联合类型 | typedef struct T_ESGStruct_s{…EnumTypeN unionTypeN;union{…//各种类型的数据}UnionStructTypeN;…}ESGStruct_s; |
表1
同时,并且按如下方式预定义ESG数据的类型值:
typedef enum T_ESGDataType_e{
ESGDATATYPE_NULL=0,
ESGDATATYPE_ESGDATA,
ESGDATATYPE_CHAR,
//其他ESG数据类型
ESGDATATYPE_STRUCTTYPE 1,
ESGDATATYPE_STRUCTTYPE2,
…
ESGDATATYPE_STRUCTTYPEN,
…
ESGDATATYPE_INVALIDE=0xFFFFFFFF
}
其中,ESGDATATYPE_NULL表示空类型值,内存中用链表表示ESG数据时,文件中用该值标记同类型数据的结束;ESGDATATYPE_ESGDATA用于表示ESG数据类型值。
参照图1,对ESG数据进行序列化时,包括以下步骤:
S101:判断数据是否为空值,若是,保存空类型值并结束本流程,否则,进入下一步;
S102:保存该数据的预定义类型值;
S103:保存该数据的简单类型子成员的数据值及复杂类型子成员的地址值;
S104:依照所述复杂类型子成员的声明顺序,根据其数据类型是结构体类型、联合类型或字符串类型采用相应的数据保存方式对其进行保存,具体如下所述:
1、若某复杂类型子成员为结构体类型数据,通过以下步骤对其进行保存:
首先,保存该结构体类型数据的预定义类型值;
其次,保存该结构体类型数据的简单类型子成员的数据值及复杂类型子成员的地址值;
最后,依照该结构体类型数据复杂类型子成员的顺序,依据其数据类型是结构体类型、联合类型或字符串类型采用相应的数据保存方式对其进行保存。
2、若某复杂类型子成员为联合类型数据,通过以下步骤对其进行保存:
首先,保存该联合类型数据的预定义类型值;
然后,该联合类型数据保存的数据为简单类型数据时,保存其数据值;该联合类型数据保存的数据为复杂类型数据时,根据其数据类型是结构体类型、联合类型或字符串类型采用相应的数据保存方式对其进行保存。
3、若某复杂类型子成员为字符串类型数据时,通过以下步骤对其进行保存:
首先,保存该字符串类型数据的预定义类型值;
其次,保存该字符串类型数据的长度值;
再次,保存该字符串类型数据的数据值;
最后,保存空类型值。
该数据保存完毕后,如果还有ESG数据需要保存,则再次执行上述流程。
在序列化时可以设置一个适当大小的内存缓冲区,每次在保存ESG数据时,先判断缓冲区是否写满,如果即将写满,则先将缓冲区中的数据写到文件中并清空缓冲区,否则,直接将ESG写到缓冲区中;所有的数据处理完以后缓冲区未满,则将缓冲区中的数据写到文件中。内存缓冲区的应用可以进一步提高数据保存的效率。
参照图2,对ESG数据进行反序列化时,包括以下步骤:
S201:读取数据的类型值;
S202:判断所述类型值是否为空类型值,若是,在内存中保存空值并结束本流程,否则,进入下一步;
S203:判断所述类型值是否为ESG数据类型值,若是,进入下一步,否则,在内存中保存空值并结束本流程;
S204:将该数据的简单类型子成员的数据值及复杂类型子成员的地址值读取到为其分配的内存中;
S205:依照所述复杂类型子成员的顺序,根据其数据类型值是结构体类型值、联合类型值或字符串类型值采用相应的数据读取方式将其读取到所述内存中;也就是说,对于每个复杂类型子成员,首先读取其类型值,然后根据类型值采取相应的数据读取方式,具体如下所述:
1、若某复杂类型子成员的数据类型值为结构体类型值,通过以下步骤将其读取到所述内存中:
首先,将该结构体类型数据的简单类型子成员的数据值及复杂类型子成员的地址值读取到所述内存中;
其次,依照该结构体类型数据复杂类型子成员的顺序,依据其数据类型值是结构体类型值、联合类型值或字符串类型值采用相应的数据读取方式将其读取到所述内存中。
2、若某复杂类型子成员的数据类型值为联合类型值,则该联合类型数据保存的数据为简单类型数据时,将其数据值读取到所述内存中;该联合类型数据保存的数据为复杂类型数据时,根据其数据类型值是结构体类型值、联合类型值或字符串类型值采用相应的数据读取方式将其读取到所述内存中。
3、若某复杂类型子成员的数据类型值为字符串类型值,通过以下步骤将其读取到所述内存中:
首先,将该字符串类型数据的长度值读取到所述内存中;
其次,将该字符串类型数据的数据值读取到所述内存中;
最后,将空类型值读取到所述内存中。
该数据读取完毕后,如果还有ESG数据需要读取到内存中,则再次执行上述流程。
通过以上描述可以看出,本发明序列化过程中保存了每个复杂类型数据的预定义类型值,在反序列化的过程中通过读取类型值即可判断该数据是什么类型,根据数据的类型将其保存到内存相应的位置,从而解决了复杂类型数据从文件中恢复后指针无效的问题。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (10)
1、一种电子服务指南数据的序列化方法,其特征在于,包括以下步骤:
a、保存数据的预定义类型值;
b、保存所述数据的简单类型子成员的数据值及复杂类型子成员的地址值;
c、依照所述复杂类型子成员的顺序,根据其数据类型是结构体类型、联合类型或字符串类型采用相应的数据保存方式对其进行保存。
2、如权利要求1所述的电子服务指南数据的序列化方法,其特征在于,所述步骤a之前还包括以下步骤:判断所述数据是否为空值,若是,保存空类型值并结束序列化流程,否则,进入所述步骤a。
3、如权利要求1所述的电子服务指南数据的序列化方法,其特征在于,所述步骤c中的复杂类型子成员为结构体类型数据时,通过以下步骤对其进行保存:
c11、保存所述结构体类型数据的预定义类型值;
c12、保存所述结构体类型数据的简单类型子成员的数据值及复杂类型子成员的地址值;
c13、依照所述结构体类型数据复杂类型子成员的顺序,依据其数据类型是结构体类型、联合类型或字符串类型采用相应的数据保存方式对其进行保存。
4、如权利要求1所述的电子服务指南数据的序列化方法,其特征在于,所述步骤c中的复杂类型子成员为联合类型数据时,通过以下步骤对其进行保存:
c21、保存所述联合类型数据的预定义类型值;
c22、所述联合类型数据保存的数据为简单类型数据时,保存其数据值;所述联合类型数据保存的数据为复杂类型数据时,根据其数据类型是结构体类型、联合类型或字符串类型采用相应的数据保存方式对其进行保存。
5、如权利要求1所述的电子服务指南数据的序列化方法,其特征在于,所述步骤c中的复杂类型子成员为字符串类型数据时,通过以下步骤对其进行保存:
c31、保存所述字符串类型数据的预定义类型值;
c32、保存所述字符串类型数据的长度值;
c33、保存所述字符串类型数据的数据值;
c34、保存空类型值。
6、一种电子服务指南数据的反序列化方法,其特征在于,包括以下步骤:
A、数据的类型值为电子服务指南数据类型值时,将所述数据的简单类型子成员的数据值及复杂类型子成员的地址值读取到为所述数据分配的内存中;
B、依照所述复杂类型子成员的顺序,根据其数据类型值是结构体类型值、联合类型值或字符串类型值采用相应的数据读取方式将其读取到所述内存中。
7、如权利要求6所述的电子服务指南数据的反序列化方法,其特征在于,所述步骤A之前还包括以下步骤:判断所述数据的类型值是否为空类型值,若是,在所述内存中保存空值并结束反序列化流程,否则,进入所述步骤A。
8、如权利要求6所述的电子服务指南数据的反序列化方法,其特征在于,所述步骤B中的复杂类型子成员的数据类型值为结构体类型值时,通过以下步骤将其读取到所述内存中:
B11、将所述结构体类型数据的简单类型子成员的数据值及复杂类型子成员的地址值读取到所述内存中;
B12、依照所述结构体类型数据复杂类型子成员的顺序,依据其数据类型值是结构体类型值、联合类型值或字符串类型值采用相应的数据读取方式将其读取到所述内存中。
9、如权利要求6所述的电子服务指南数据的反序列化方法,其特征在于,所述步骤B中的复杂类型子成员的数据类型值为联合类型值时,若所述联合类型数据保存的数据为简单类型数据,将其数据值读取到所述内存中;若所述联合类型数据保存的数据为复杂类型数据,则根据其数据类型值是结构体类型值、联合类型值或字符串类型值采用相应的数据读取方式将其读取到所述内存中。
10、如权利要求6所述的电子服务指南数据的反序列化方法,其特征在于,所述步骤B中的复杂类型子成员的数据类型值为字符串类型值时,通过以下步骤将其读取到所述内存中:
B31、将所述字符串类型数据的长度值读取到所述内存中;
B32、将所述字符串类型数据的数据值读取到所述内存中;
B33、将空类型值读取到所述内存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100663767A CN101277161B (zh) | 2008-03-28 | 2008-03-28 | 一种电子服务指南数据的序列化及反序列化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100663767A CN101277161B (zh) | 2008-03-28 | 2008-03-28 | 一种电子服务指南数据的序列化及反序列化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101277161A true CN101277161A (zh) | 2008-10-01 |
CN101277161B CN101277161B (zh) | 2010-06-02 |
Family
ID=39996210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100663767A Expired - Fee Related CN101277161B (zh) | 2008-03-28 | 2008-03-28 | 一种电子服务指南数据的序列化及反序列化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101277161B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981884A (zh) * | 2012-11-22 | 2013-03-20 | 用友软件股份有限公司 | 序列化装置和序列化方法 |
CN103036641A (zh) * | 2011-09-29 | 2013-04-10 | 北京新媒传信科技有限公司 | 数据交换方法、***及反序列化方法 |
CN103135988A (zh) * | 2013-03-11 | 2013-06-05 | 银联商务有限公司 | 数据处理方法及*** |
CN109271180A (zh) * | 2017-07-12 | 2019-01-25 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN111478898A (zh) * | 2020-04-03 | 2020-07-31 | 爱瑟福信息科技(上海)有限公司 | Someip协议通信数据的序列化和反序列化方法及其*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1235404C (zh) * | 2003-12-24 | 2006-01-04 | 清华大学深圳研究生院 | 基于Internet的视频会议共享白板实现方法 |
CN101122852A (zh) * | 2006-08-08 | 2008-02-13 | 华为技术有限公司 | 一种联机事务处理***中间件的封装方法 |
CN101150492A (zh) * | 2006-09-21 | 2008-03-26 | 中兴通讯股份有限公司 | 一种移动多媒体广播电子业务指南数据的播发调度方法 |
-
2008
- 2008-03-28 CN CN2008100663767A patent/CN101277161B/zh not_active Expired - Fee Related
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103036641A (zh) * | 2011-09-29 | 2013-04-10 | 北京新媒传信科技有限公司 | 数据交换方法、***及反序列化方法 |
CN103036641B (zh) * | 2011-09-29 | 2016-01-20 | 北京新媒传信科技有限公司 | 数据交换方法、***及反序列化方法 |
CN102981884A (zh) * | 2012-11-22 | 2013-03-20 | 用友软件股份有限公司 | 序列化装置和序列化方法 |
CN102981884B (zh) * | 2012-11-22 | 2016-03-30 | 用友优普信息技术有限公司 | 序列化装置和序列化方法 |
CN103135988A (zh) * | 2013-03-11 | 2013-06-05 | 银联商务有限公司 | 数据处理方法及*** |
CN103135988B (zh) * | 2013-03-11 | 2016-02-24 | 银联商务有限公司 | 数据处理方法及*** |
CN109271180A (zh) * | 2017-07-12 | 2019-01-25 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN109271180B (zh) * | 2017-07-12 | 2021-12-24 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN111478898A (zh) * | 2020-04-03 | 2020-07-31 | 爱瑟福信息科技(上海)有限公司 | Someip协议通信数据的序列化和反序列化方法及其*** |
CN111478898B (zh) * | 2020-04-03 | 2022-03-11 | 爱瑟福信息科技(上海)有限公司 | Someip协议通信数据的序列化和反序列化方法及其*** |
Also Published As
Publication number | Publication date |
---|---|
CN101277161B (zh) | 2010-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101277161B (zh) | 一种电子服务指南数据的序列化及反序列化方法 | |
CN205430501U (zh) | 移动终端网络广告视频和正片视频无缝切换装置 | |
CN101651825A (zh) | 数据采集上传方法和*** | |
CN101014113B (zh) | 一种应用于手机电视的电子服务指南加载方法 | |
CN101341697B (zh) | 具有mpe-fec帧存储器的装置 | |
US9407447B2 (en) | Multicast message replication method and device | |
CN102355604B (zh) | 媒体报文传输方法及装置 | |
CN103310001A (zh) | 一种设置视频列表的方法和装置 | |
CN101127990A (zh) | 一种查找手机短信的方法 | |
CN102711018B (zh) | 一种无线话筒 | |
CN103401888A (zh) | 多媒体数据的接收与处理方法和装置 | |
CN102118709B (zh) | 提高彩信群发业务时格式转换效率的方法及*** | |
CN201360299Y (zh) | 可接收短信留言的电视机 | |
CN101778273A (zh) | 多媒体广播节目转录方法及装置 | |
CN104219470A (zh) | 数字电视接收装置及数字电视播放方法 | |
CN101383960B (zh) | 手机电视业务的实现方法、终端及采用的数据缓冲方法 | |
TW200729955A (en) | Method and system for storing data packets | |
CN101150655A (zh) | 一种媒体呈现方法及一种电视终端 | |
CN101720033A (zh) | 一种视频传输设备及其usb传输的装置及方法 | |
CN201937744U (zh) | 信号解码装置及电视机 | |
CN2708410Y (zh) | 图像处理装置 | |
CN201374766Y (zh) | 一种数字电视接收装置 | |
CN201114641Y (zh) | 一种双模的移动通讯终端 | |
CN101115048A (zh) | 一种3c电视节目数据库管理方法 | |
Bao | The Implementation and Application of Mobile Television in China |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100602 Termination date: 20170328 |