11中存儲(chǔ)起始標(biāo)志、結(jié)束標(biāo)志和轉(zhuǎn)碼標(biāo)志。其中,所述起始標(biāo)志、結(jié)束標(biāo)志和轉(zhuǎn)碼標(biāo)志均設(shè)為單字節(jié)數(shù)據(jù)。所述起始標(biāo)志、結(jié)束標(biāo)志和轉(zhuǎn)碼標(biāo)志彼此不同。優(yōu)選地,所述起始標(biāo)志、結(jié)束標(biāo)志和轉(zhuǎn)碼標(biāo)志均不為全O和全I(xiàn)字節(jié)。
[0059]所述文本編碼系統(tǒng)I將所要編碼的數(shù)據(jù)塊封裝在數(shù)據(jù)封包中。為了確保所對(duì)應(yīng)的解碼系統(tǒng)驗(yàn)證所述數(shù)據(jù)塊的完整性,優(yōu)選的,所述數(shù)據(jù)封包中還包含:校驗(yàn)塊。
[0060]對(duì)應(yīng)的,所述文本編碼系統(tǒng)I還包括校驗(yàn)?zāi)K(未予圖示)。
[0061]所述校驗(yàn)?zāi)K用于在所述文本編碼系統(tǒng)I進(jìn)行編碼之前,將所述數(shù)據(jù)塊中的所有字節(jié)做數(shù)值計(jì)算,根據(jù)所得到的數(shù)值計(jì)算結(jié)果來(lái)設(shè)定所述校驗(yàn)塊。
[0062]具體地,所述校驗(yàn)?zāi)K將所述數(shù)據(jù)塊中的所有字節(jié)做加法運(yùn)算,得到一多字節(jié)的數(shù)值。所述校驗(yàn)?zāi)K可以將所述多字節(jié)的數(shù)值取反、或?qū)⑺龆嘧止?jié)的數(shù)值與預(yù)設(shè)的同等字節(jié)的數(shù)值進(jìn)行異或運(yùn)算等,所得到的結(jié)果作為所述校驗(yàn)塊。
[0063]優(yōu)選地,所述校驗(yàn)?zāi)K將所得到的數(shù)值計(jì)算結(jié)果中的預(yù)設(shè)字節(jié)進(jìn)行拆分,并將拆分后的多個(gè)字節(jié)作為所述校驗(yàn)塊。
[0064]例如,所述校驗(yàn)?zāi)K提取所述多字節(jié)的數(shù)值中的最后一字節(jié)數(shù)值,再將所提取的字節(jié)數(shù)值按照低位和高位拆分成兩個(gè)字節(jié),其中,所述高位位于第一個(gè)字節(jié)的高位,所述低位位于第二個(gè)字節(jié)的低位,該兩個(gè)字節(jié)的其他位用全O或全I(xiàn)補(bǔ)位。則所述校驗(yàn)塊設(shè)置為所述第一個(gè)字節(jié)和第二個(gè)字節(jié)。則所述校驗(yàn)?zāi)K將所述數(shù)據(jù)塊和校驗(yàn)塊進(jìn)行封包。
[0065]需要說(shuō)明的是,本領(lǐng)域技術(shù)人員應(yīng)該理解,所述校驗(yàn)塊的取得方式僅為舉例。而非對(duì)本發(fā)明的限制。現(xiàn)有技術(shù)中、或今后出現(xiàn)的校驗(yàn)塊的取得方式如能夠適用本發(fā)明,也應(yīng)包含在本發(fā)明所述范圍之內(nèi)。
[0066]所述編碼模塊12用于按照預(yù)設(shè)的轉(zhuǎn)碼規(guī)則,將所述數(shù)據(jù)封包中與所述起始標(biāo)志、結(jié)束標(biāo)志和轉(zhuǎn)碼標(biāo)志相同的數(shù)據(jù)字節(jié)與所述轉(zhuǎn)碼標(biāo)志進(jìn)行轉(zhuǎn)碼處理,以得到不同于所述起始標(biāo)志、結(jié)束標(biāo)志和轉(zhuǎn)碼標(biāo)志的轉(zhuǎn)碼結(jié)果,并用所得到的轉(zhuǎn)碼結(jié)果和所述轉(zhuǎn)碼標(biāo)志來(lái)替換所述數(shù)據(jù)字節(jié)。
[0067]具體地,所述編碼模塊12遍歷所述數(shù)據(jù)封包中的所有數(shù)據(jù)字節(jié),當(dāng)檢測(cè)出數(shù)據(jù)字節(jié)與所述起始標(biāo)志、結(jié)束標(biāo)志和轉(zhuǎn)碼標(biāo)志相同時(shí),為了避免相應(yīng)的解碼系統(tǒng)做出誤解操作(如,錯(cuò)認(rèn)數(shù)據(jù)封包的起止標(biāo)志、轉(zhuǎn)碼標(biāo)志等),需要對(duì)所檢測(cè)出的數(shù)據(jù)字節(jié)進(jìn)行轉(zhuǎn)碼。
[0068]所述編碼模塊12對(duì)所檢測(cè)出的數(shù)據(jù)字節(jié)進(jìn)行轉(zhuǎn)碼,并用所得到的轉(zhuǎn)碼結(jié)果和所述轉(zhuǎn)碼標(biāo)志來(lái)替換所述數(shù)據(jù)字節(jié)的方式包括但不限于:
[0069]I)將所述數(shù)據(jù)封包中與所述起始標(biāo)志和結(jié)束標(biāo)志相同的數(shù)據(jù)字節(jié)與所述轉(zhuǎn)碼標(biāo)志進(jìn)行邏輯運(yùn)算,以得到與所述起始標(biāo)志和結(jié)束標(biāo)志均不相同的運(yùn)算結(jié)果,并用所得到的運(yùn)算結(jié)果和所述轉(zhuǎn)碼標(biāo)志來(lái)替換所述數(shù)據(jù)字節(jié)。
[0070]例如,預(yù)設(shè)的所述起始標(biāo)志為0x20,預(yù)設(shè)的所述轉(zhuǎn)碼標(biāo)志為0x40,所述編碼模塊12檢測(cè)出數(shù)據(jù)塊中的一數(shù)據(jù)字節(jié)也是0x20,則將所述數(shù)據(jù)字節(jié)與轉(zhuǎn)碼標(biāo)志進(jìn)行異或運(yùn)算得到0x60。所述編碼模塊12按照預(yù)設(shè)的轉(zhuǎn)碼標(biāo)志+運(yùn)算結(jié)果的字節(jié)順序,將所述數(shù)據(jù)塊中的0x20數(shù)據(jù)字節(jié)替換成0x400x60。
[0071]2)在所述數(shù)據(jù)封包中與所述轉(zhuǎn)碼標(biāo)志相同的數(shù)據(jù)字節(jié)前/后插入所述轉(zhuǎn)碼標(biāo)志,并用所得到的連續(xù)兩個(gè)所述轉(zhuǎn)碼標(biāo)志來(lái)替換所述數(shù)據(jù)字節(jié)。
[0072]例如,預(yù)設(shè)的所述轉(zhuǎn)碼標(biāo)志為0x40,所述編碼模塊12檢測(cè)出校驗(yàn)塊中的一數(shù)據(jù)字節(jié)也是0x40,則在所述數(shù)據(jù)字節(jié)0x40前插入所述轉(zhuǎn)碼標(biāo)志。即得到替換所述數(shù)據(jù)字節(jié)0x40的兩個(gè)字節(jié)的數(shù)據(jù):0x400x40。
[0073]接著,所述封裝模塊13用于在替換后的數(shù)據(jù)封包的首尾處對(duì)應(yīng)增加所述起始標(biāo)志和結(jié)束標(biāo)志,并予以發(fā)送。
[0074]具體地,所述封裝模塊13將所述編碼模塊12中替換后的數(shù)據(jù)封包的首尾處對(duì)應(yīng)增加所述起始標(biāo)志和結(jié)束標(biāo)志。然后按照http、https等通信協(xié)議,將包含有所述起始標(biāo)志和結(jié)束標(biāo)志和數(shù)據(jù)封包發(fā)送至包含有相應(yīng)解碼系統(tǒng)的接收端。
[0075]需要說(shuō)明的是,本領(lǐng)域技術(shù)人員應(yīng)該理解,上述編碼模塊12和封裝模塊13并非一定按照描述順序執(zhí)行。還可以先執(zhí)行封裝模塊13再執(zhí)行編碼模塊12。
[0076]實(shí)施例四
[0077]如圖4所示,對(duì)應(yīng)于實(shí)施例三所述的文本編碼系統(tǒng),本實(shí)施例還提供一種文本解碼系統(tǒng)2。其中,所述文本解碼系統(tǒng)2包括電子設(shè)備的軟件和硬件。所述電子設(shè)備包括任何能夠按照預(yù)設(shè)程序進(jìn)行數(shù)值和邏輯運(yùn)算的設(shè)備,其包括但不限于:單個(gè)/多個(gè)服務(wù)器、個(gè)人終端、移動(dòng)設(shè)備、嵌入式設(shè)備等。
[0078]所述文本解碼系統(tǒng)2包括:第二存儲(chǔ)模塊21、解封裝模塊22和解碼模塊23。
[0079]在所述第二存儲(chǔ)模塊21中存儲(chǔ)對(duì)應(yīng)所述文本編碼系統(tǒng)中所保存的起始標(biāo)志、結(jié)束標(biāo)志和轉(zhuǎn)碼標(biāo)志。其中,所述起始標(biāo)志、結(jié)束標(biāo)志和轉(zhuǎn)碼標(biāo)志均設(shè)為單字節(jié)數(shù)據(jù)。所述起始標(biāo)志、結(jié)束標(biāo)志和轉(zhuǎn)碼標(biāo)志彼此不同。優(yōu)選地,所述起始標(biāo)志、結(jié)束標(biāo)志和轉(zhuǎn)碼標(biāo)志均不為全O和全I(xiàn)字節(jié)。
[0080]所述解封裝模塊22用于基于所述起始標(biāo)志和結(jié)束標(biāo)志,從所獲取的數(shù)據(jù)包中提取數(shù)據(jù)封包。
[0081]具體地,所述解封裝模塊22在接收到一數(shù)據(jù)包時(shí),根據(jù)預(yù)設(shè)的起始標(biāo)志和結(jié)束標(biāo)志來(lái)提取所述數(shù)據(jù)包中的數(shù)據(jù)封包。其中,所述數(shù)據(jù)封包包括數(shù)據(jù)塊。甚至包括:用于驗(yàn)證所述數(shù)據(jù)塊的完整性的校驗(yàn)塊。
[0082]所述解碼模塊23用于檢查所述數(shù)據(jù)封包中的所述轉(zhuǎn)碼標(biāo)志,按照預(yù)設(shè)的轉(zhuǎn)碼規(guī)則將包含所述轉(zhuǎn)碼標(biāo)志的兩個(gè)字節(jié)的數(shù)據(jù)轉(zhuǎn)換成一數(shù)據(jù)字節(jié),并用所述數(shù)據(jù)字節(jié)來(lái)替換所述兩個(gè)字節(jié)的數(shù)據(jù),以得到原始的數(shù)據(jù)封包。
[0083]具體地,所述解碼模塊23檢查所述數(shù)據(jù)封包中的每個(gè)字節(jié),當(dāng)存在于所述轉(zhuǎn)碼標(biāo)志相同的數(shù)據(jù)字節(jié)時(shí),按照預(yù)設(shè)的轉(zhuǎn)碼規(guī)則將包含所述轉(zhuǎn)碼標(biāo)志的兩個(gè)字節(jié)的數(shù)據(jù)轉(zhuǎn)換成一數(shù)據(jù)字節(jié),并用所述數(shù)據(jù)字節(jié)來(lái)替換所述兩個(gè)字節(jié)的數(shù)據(jù),以得到原始的數(shù)據(jù)封包。
[0084]在此,所述將包含所述轉(zhuǎn)碼標(biāo)志的兩個(gè)字節(jié)的數(shù)據(jù)轉(zhuǎn)換成一數(shù)據(jù)字節(jié)的方式包括但不限于:
[0085]I)將包含所述轉(zhuǎn)碼標(biāo)志的兩個(gè)字節(jié)的數(shù)據(jù)中非轉(zhuǎn)碼標(biāo)志的數(shù)據(jù)字節(jié)與所述轉(zhuǎn)碼標(biāo)志進(jìn)行邏輯運(yùn)算,以得到與所述起始標(biāo)志、或結(jié)束標(biāo)志相同的運(yùn)算結(jié)果,并將所得到的運(yùn)算結(jié)果替換所述兩個(gè)字節(jié)的數(shù)據(jù)。
[0086]例如,所述解碼模塊23檢測(cè)出數(shù)據(jù)塊包含:…OxlA 0x040x06…等數(shù)據(jù)字節(jié),其中,0x04為所述轉(zhuǎn)碼標(biāo)志。按照預(yù)設(shè)的轉(zhuǎn)碼標(biāo)志+編碼數(shù)據(jù)的組合形式,將0x04數(shù)據(jù)字節(jié)之后的0x06數(shù)據(jù)字節(jié)進(jìn)行解碼運(yùn)算,即:將0x06與0x04進(jìn)行異或運(yùn)算,得到0x02數(shù)據(jù)字節(jié),則所述解碼模塊23得到的解碼后的數(shù)據(jù)塊包括:一OxlA 0x02…等數(shù)據(jù)字節(jié)。
[0087]2)去除所述數(shù)據(jù)封包中連續(xù)兩個(gè)所述轉(zhuǎn)碼標(biāo)志中的一個(gè)所述轉(zhuǎn)碼標(biāo)志,并將去除后的所述轉(zhuǎn)碼標(biāo)志作為所述數(shù)據(jù)封包中的原始數(shù)據(jù)。
[0088]例如,所述文本解碼系統(tǒng)2檢測(cè)出數(shù)據(jù)塊包含:…OxlA 0x040x04…等數(shù)據(jù)字節(jié),其中,0x04為所述轉(zhuǎn)碼標(biāo)志。按照預(yù)設(shè)的轉(zhuǎn)碼標(biāo)志+轉(zhuǎn)碼標(biāo)志的組合形式,將其中一個(gè)0x04數(shù)據(jù)字節(jié)予以去除,