亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種變長數(shù)據(jù)存取方法

文檔序號(hào):6494001閱讀:259來源:國知局
一種變長數(shù)據(jù)存取方法
【專利摘要】本發(fā)明公開一種變長數(shù)據(jù)存取方法,在數(shù)據(jù)存儲(chǔ)階段,將變長數(shù)據(jù)分割為多個(gè)含固定字節(jié)的數(shù)據(jù)段,并對所述多個(gè)數(shù)據(jù)段進(jìn)行封裝得到多個(gè)包含固定字節(jié)的數(shù)據(jù)包;依次將多個(gè)數(shù)據(jù)包存入確定好的存儲(chǔ)塊中,且保證同一條變長數(shù)據(jù)存儲(chǔ)在同一個(gè)存儲(chǔ)塊內(nèi)。在數(shù)據(jù)讀取階段,首先獲取所述變長數(shù)據(jù)的起始地址和終止地址,接下來去除所述存儲(chǔ)塊塊尾的冗余數(shù)據(jù),計(jì)算實(shí)際已用存儲(chǔ)空間,并按照固定長度讀取所述存儲(chǔ)塊中的數(shù)據(jù),直至讀取至終止地址時(shí)結(jié)束。本發(fā)明采用變長存儲(chǔ)、定長讀取的方式,既滿足數(shù)據(jù)發(fā)展的需求,又節(jié)約硬件成本,無需改裝舊有的定長數(shù)據(jù)讀取設(shè)備,從而延長了已有設(shè)備的使用期限,有利于節(jié)約成本、提高效率。
【專利說明】一種變長數(shù)據(jù)存取方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)讀寫方法【技術(shù)領(lǐng)域】,特別涉及一種利用定長設(shè)備對變長數(shù)據(jù)進(jìn)行讀寫操作的方法。
【背景技術(shù)】
[0002]隨著國稅業(yè)務(wù)的拓展,大量服務(wù)于企業(yè)端的舊款稅控設(shè)備無法滿足開具變長發(fā)票的存儲(chǔ)要求,若全部更換為新設(shè)備,會(huì)給企業(yè)用戶造成沉重的負(fù)擔(dān),同時(shí)大規(guī)模升級(jí)設(shè)備也涉及人力、物力等資源的極大耗費(fèi)。受限于設(shè)備硬件NandFlash存儲(chǔ)容量過小,以及兼容現(xiàn)有稅控系統(tǒng)發(fā)票明細(xì)定長報(bào)稅方式,因此,如何提供一種利用舊有稅控系統(tǒng)存取變長數(shù)據(jù)發(fā)票的方法,實(shí)為本領(lǐng)域技術(shù)人員亟待解決的問題。

【發(fā)明內(nèi)容】

[0003]本發(fā)明的目的是為了兼容目前變長數(shù)據(jù)發(fā)票的發(fā)展趨勢以及稅控系統(tǒng)定長報(bào)稅的方式,提供一種可靠性好且不需改造舊有設(shè)備的變長數(shù)據(jù)存取方法。
[0004]為達(dá)上述目的,本發(fā)明提供一種變長數(shù)據(jù)存取方法,包括數(shù)據(jù)存儲(chǔ)階段和數(shù)據(jù)讀取階段兩部分,所述數(shù)據(jù)存儲(chǔ)階段包括以下步驟:
[0005]Cl:將存儲(chǔ)介質(zhì)劃分為多個(gè)容量相等的存儲(chǔ)塊;
[0006]C2:將所述變長數(shù)據(jù)按照字節(jié)數(shù)分割為多個(gè)含固定字節(jié)的數(shù)據(jù)段,對所述多個(gè)數(shù)據(jù)段進(jìn)行封裝,得到多個(gè)包含固定字節(jié)的數(shù)據(jù)包;所述多個(gè)數(shù)據(jù)包根據(jù)剩余長度分為首包、中間包和尾包,其中剩余長度是指位于當(dāng)前數(shù)據(jù)包之后的所有數(shù)據(jù)包的大??;
[0007]C3:計(jì)算所述存儲(chǔ)塊的剩余空間,根據(jù)剩余空間大小確定安放所述變長數(shù)據(jù)的存儲(chǔ)塊,以保證同一條變長數(shù)據(jù)存儲(chǔ)在同一個(gè)存儲(chǔ)塊內(nèi);
[0008]C4:將所述多個(gè)數(shù)據(jù)包依次存入確定好的存儲(chǔ)塊內(nèi);
[0009]所述數(shù)據(jù)讀取階段包括以下步驟:
[0010]Dl:獲取所述變長數(shù)據(jù)的起始地址和終止地址;
[0011]D2:去除所述存儲(chǔ)塊塊尾的冗余數(shù)據(jù),計(jì)算實(shí)際已用存儲(chǔ)空間;
[0012]D3:按照固定長度讀取所述存儲(chǔ)塊中的數(shù)據(jù);
[0013]D4:讀取至終止地址,數(shù)據(jù)讀取過程結(jié)束。
[0014]本發(fā)明提出的一種變長數(shù)據(jù)存取方法,其中,步驟C2中對所述數(shù)據(jù)包的格式為:
[0015]標(biāo)志位+數(shù)據(jù)總長度+剩余長度+數(shù)據(jù)段+校驗(yàn)和
[0016]其中標(biāo)志位用于表示一個(gè)數(shù)據(jù)包的開始,數(shù)據(jù)總長度用于表示一條變長數(shù)據(jù)的總體長度,校驗(yàn)和用于進(jìn)行數(shù)據(jù)校驗(yàn)。
[0017]本發(fā)明提出的一種變長數(shù)據(jù)存取方法,其中,所述步驟C3中確定存儲(chǔ)塊的方法為,比較存儲(chǔ)塊的剩余空間和要存儲(chǔ)的變長數(shù)據(jù)的大小,若剩余空間大于所述變長數(shù)據(jù)大小,則將所述變長數(shù)據(jù)存儲(chǔ)在所述存儲(chǔ)塊內(nèi);若剩余空間不足以存儲(chǔ)該變長數(shù)據(jù)的,該剩余空間將被舍棄,所述變長數(shù)據(jù)從下一個(gè)存儲(chǔ)塊的首部開始存儲(chǔ);同時(shí)記錄被舍棄的剩余空間數(shù)。
[0018]本發(fā)明提出的一種變長數(shù)據(jù)存取方法,其中,所述步驟C4中還包括:判斷當(dāng)前數(shù)據(jù)包是否為首包,若是,重復(fù)步驟C3 ;若不是,直接存儲(chǔ)當(dāng)前數(shù)據(jù)包。
[0019]本發(fā)明提出的一種變長數(shù)據(jù)存取方法,其中,當(dāng)步驟C2中分割后的數(shù)據(jù)段長度不足預(yù)設(shè)的固定字節(jié)的,不足部分用O填補(bǔ)。
[0020]本發(fā)明提出的一種變長數(shù)據(jù)存取方法,其中,所述步驟D3中包括:讀取數(shù)據(jù)包中的標(biāo)志位,重新組裝原變長數(shù)據(jù)。
[0021]本發(fā)明提出的一種變長數(shù)據(jù)存取方法,其中,采用順序讀取或隨機(jī)讀取的方式讀取數(shù)據(jù)。
[0022]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
[0023]通過本發(fā)明,使舊款稅控設(shè)備能夠支持變長發(fā)票存儲(chǔ)并兼容定長報(bào)稅方式,延長了已有設(shè)備的使用期限,滿足新需求的同時(shí),也節(jié)省了硬件成本。本發(fā)明不需要存儲(chǔ)報(bào)稅臨時(shí)文件,節(jié)省空間,是一種高效的變長數(shù)據(jù)存取解決方案。
【專利附圖】

【附圖說明】
[0024]圖1為本發(fā)明的數(shù)據(jù)存儲(chǔ)過程流程圖;
[0025]圖2為本發(fā)明的數(shù)據(jù)讀取過程流程圖;
[0026]圖3為本發(fā)明數(shù)據(jù)存儲(chǔ)階段的一具體實(shí)施例的示意圖;
[0027]圖4為本發(fā)明數(shù)據(jù)讀取階段的一具體實(shí)施例的示意圖。
【具體實(shí)施方式】
[0028]以下結(jié)合附圖,就本發(fā)明上述的和另外的技術(shù)特征和優(yōu)點(diǎn)做進(jìn)一步地說明。
[0029]根據(jù)本發(fā)明的技術(shù)方案,開具發(fā)票時(shí),按照一定規(guī)則將變長發(fā)票明細(xì)數(shù)據(jù)裁切成固定大小的數(shù)據(jù)段,并將數(shù)據(jù)段封裝為數(shù)據(jù)包。數(shù)據(jù)包尺寸由接口軟件與固件程序約定,可設(shè)置為任何有意義的數(shù)值。在本發(fā)明的實(shí)施例中,該固定大小選擇為512字節(jié),即數(shù)據(jù)包的尺寸為512字節(jié)。
[0030]變長發(fā)票數(shù)據(jù)包格式如下:
[0031]發(fā)票標(biāo)志+發(fā)票數(shù)據(jù)總長度+剩余長度+發(fā)票數(shù)據(jù)(一個(gè)分?jǐn)?shù)據(jù)包,512字節(jié))+校驗(yàn)和
[0032]寫入時(shí)根據(jù)剩余長度不同,將分割并封裝好的數(shù)據(jù)包又分為首包、中間包和尾包。剩余長度是指包括當(dāng)前數(shù)據(jù)包及其之后的所有數(shù)據(jù)包的大小。
[0033]所謂首包是指剩余長度等于變長發(fā)票數(shù)據(jù)的總長度,也即一條變長發(fā)票數(shù)據(jù)的第一個(gè)數(shù)據(jù)包;中間包是指剩余長度大于一個(gè)分?jǐn)?shù)據(jù)包的大小(512字節(jié));尾包是指剩余長度小于或等于一個(gè)分?jǐn)?shù)據(jù)包的大小(512字節(jié))。
[0034]上述分割方法可適用于任意長度的變長發(fā)票明細(xì)數(shù)據(jù),不需對發(fā)票明細(xì)數(shù)據(jù)進(jìn)行修改,能夠保證數(shù)據(jù)的完整性和一致性;同時(shí)通過“剩余長度”字段標(biāo)示裁切下的每一個(gè)分片,可用于計(jì)算它與首包的偏移,也便于存取尋址,若拓展為網(wǎng)絡(luò)傳輸,也可用于數(shù)據(jù)包的排序和重傳。
[0035]整張發(fā)票明細(xì)數(shù)據(jù)在NandFlash存儲(chǔ)介質(zhì)上是連續(xù)存儲(chǔ)的,先尋找可用空間存儲(chǔ)發(fā)票明細(xì)數(shù)據(jù)的首包,存儲(chǔ)發(fā)票標(biāo)志,再通過“剩余長度”字段計(jì)算與首包的偏移,存儲(chǔ)獲取的剩余數(shù)據(jù)包。
[0036]值得一提的是,并非所有的變長發(fā)票數(shù)據(jù)都具有首包、中間包和尾包,當(dāng)變長發(fā)票數(shù)據(jù)長度不足時(shí),可能會(huì)只包含首包或者只包含首包和尾包。如下所述:
[0037]只有首包的情況:寫入一張長度為436字節(jié)的發(fā)票明細(xì)數(shù)據(jù)時(shí),只需要使用一個(gè)發(fā)票數(shù)據(jù)包(512字節(jié))。
[0038]首包和尾包的情況:寫入一張長度在513字節(jié)-1024字節(jié)的發(fā)票明細(xì)數(shù)據(jù)時(shí),需要使用兩個(gè)數(shù)據(jù)包,首包512字節(jié),尾包1-512字節(jié)真實(shí)數(shù)據(jù),不足512字節(jié)的,空的位置填補(bǔ)O數(shù)據(jù),固件程序可以只存儲(chǔ)實(shí)際長度的數(shù)據(jù),也可以存儲(chǔ)填充過O的數(shù)據(jù),本文采用后一種方式,方便數(shù)據(jù)處理。
[0039]首包、中間包、尾包的情況:寫入一張長度在1024字節(jié)(512*2)以上的發(fā)票明細(xì)數(shù)據(jù)時(shí),例如明細(xì)數(shù)據(jù)為4.9k,裁切為如下格式:首包0.5k字節(jié),8個(gè)0.5k字節(jié)的中間包,含有0.4k真實(shí)數(shù)據(jù)+0.1k填充O數(shù)據(jù)的尾包。
[0040]NandFlash存儲(chǔ)介質(zhì)容量為128M字節(jié),分為1024個(gè)BLOCK (塊),每個(gè)BL0CK128K字節(jié)。要求單張變長發(fā)票明細(xì)數(shù)據(jù)不能跨塊。當(dāng)某一 BLOCK中剩余存儲(chǔ)空間不足以存儲(chǔ)本張發(fā)票時(shí),剩余存儲(chǔ)空間將被舍棄,從下一 BLOCK首部開始存儲(chǔ)。同時(shí)記錄塊內(nèi)被舍棄的剩余空間數(shù)(除以512字節(jié)),例如剩余4K字節(jié),記錄4K/512=8,便于報(bào)稅時(shí)組裝定長報(bào)稅數(shù)據(jù)。
[0041]圖1詳細(xì)描述了上述數(shù)據(jù)存儲(chǔ)過程的流程。開具完發(fā)票之后,首先對變長發(fā)票數(shù)據(jù)進(jìn)行裁切,存儲(chǔ)時(shí),先判斷要寫入的當(dāng)前數(shù)據(jù)包是否為首包,如是則需要計(jì)算塊內(nèi)剩余空間,以確定該變長數(shù)據(jù)存儲(chǔ)在那個(gè)存儲(chǔ)塊上,以保證一條變長發(fā)票數(shù)據(jù)位于同一個(gè)存儲(chǔ)塊內(nèi);如不是首包,則不需計(jì)算剩余空間,只需計(jì)算出存儲(chǔ)地址,直接將數(shù)據(jù)寫入指定的存儲(chǔ)塊中。
[0042]圖2給出了計(jì)算剩余空間、確定存儲(chǔ)塊的一個(gè)具體實(shí)施例。該實(shí)施例中,起始地址為某一塊首部,此塊中已存儲(chǔ)發(fā)票明細(xì)數(shù)據(jù)如下:0.5k字節(jié)、Ik字節(jié)、24.5k、60k、35k字節(jié)大小的發(fā)票,剩余7k字節(jié)。當(dāng)需要開具一張大小為8k字節(jié)的發(fā)票時(shí),當(dāng)前BLOCK (塊)剩余空間不足,記錄7k的舍棄空間(7K/512=14),使用緊挨著的下一塊存儲(chǔ)8k字節(jié)的發(fā)票,SP8k發(fā)票明細(xì)數(shù)據(jù)首包存儲(chǔ)在下一 BLOCK (塊)首部,中間包及尾包的存儲(chǔ)地址根據(jù)該包與首包的偏移計(jì)算得出,依次存儲(chǔ)。
[0043]本發(fā)明的數(shù)據(jù)讀取過程與數(shù)據(jù)存儲(chǔ)過程類似,具體可見圖2所示的數(shù)據(jù)讀取流程圖。首先獲取需要讀取的數(shù)據(jù)的起始地址,從起始地址起掃描數(shù)據(jù),去除掉補(bǔ)零的冗余數(shù)據(jù),計(jì)算實(shí)際已用存儲(chǔ)空間;當(dāng)確認(rèn)報(bào)稅數(shù)據(jù)位于當(dāng)前存儲(chǔ)塊內(nèi)時(shí),讀取標(biāo)志字段,針對實(shí)際數(shù)據(jù)采用逐段發(fā)送定長2k字節(jié)的方式訪問,即開票時(shí)按照單張變長(長度0-64k)發(fā)票存儲(chǔ),報(bào)稅時(shí)按照固定長度(2k)讀取。
[0044]現(xiàn)有系統(tǒng)的報(bào)稅階段,仍采用定長方式接收報(bào)稅數(shù)據(jù)。報(bào)稅時(shí)重新讀取標(biāo)志信息,生成變長發(fā)票明細(xì)報(bào)稅數(shù)據(jù)。發(fā)票明細(xì)數(shù)據(jù)應(yīng)連續(xù)組織,重新編號(hào)(每2K數(shù)據(jù)分配一個(gè)編號(hào)),允許隨機(jī)讀取指定編號(hào)的報(bào)稅數(shù)據(jù)。報(bào)稅數(shù)據(jù)直接發(fā)送給接口函數(shù),不使用額外存儲(chǔ)空間。
[0045]還以圖2所述的存儲(chǔ)塊為例,塊中已存儲(chǔ)發(fā)票明細(xì)數(shù)據(jù)如下:0.5k字節(jié)、Ik字節(jié)、24.5k、60k、35k字節(jié)大小的發(fā)票。圖4給出了該實(shí)施例的數(shù)據(jù)讀取示意圖。
[0046]當(dāng)報(bào)稅時(shí)需要讀取編號(hào)為I的IK報(bào)稅數(shù)據(jù)時(shí),應(yīng)取0.5k字節(jié)發(fā)票,加上Ik字節(jié)發(fā)票,加上24.5k字節(jié)發(fā)票的前0.5k,組合成2k的報(bào)稅數(shù)據(jù)。
[0047]當(dāng)報(bào)稅時(shí)需要讀取編號(hào)為2的IK報(bào)稅數(shù)據(jù)時(shí),應(yīng)取24.5k字節(jié)發(fā)票緊挨著前0.5k的2k作為報(bào)稅數(shù)據(jù)。
[0048]當(dāng)報(bào)稅時(shí)需要讀取編號(hào)為61的2K報(bào)稅數(shù)據(jù)時(shí),應(yīng)取35k字節(jié)發(fā)票的最后lk,跳過7k的舍棄空間,加上8k字節(jié)發(fā)票的前l(fā)k,組合成2k的報(bào)稅數(shù)據(jù)。
[0049]另外,本發(fā)明提出的方法用于擦除舊數(shù)據(jù)時(shí),應(yīng)盡量保持有最多的剩余發(fā)票明細(xì)數(shù)據(jù)可用,如:發(fā)票明細(xì)數(shù)據(jù)均為指定長度時(shí)(512字節(jié)的偶數(shù)倍),可充分利用存儲(chǔ)空間;發(fā)票明細(xì)數(shù)據(jù)均為比較小的票時(shí)(小于或等于512字節(jié)),可充分利用存儲(chǔ)空間;發(fā)票明細(xì)數(shù)據(jù)大小隨機(jī)分布時(shí),大數(shù)據(jù)量長期統(tǒng)計(jì),平均每塊會(huì)浪費(fèi)(發(fā)票最大允許長度/2)字節(jié)的空間。
[0050]以上說明對本發(fā)明而言只是說明性的,而非限制性的,本領(lǐng)域普通技術(shù)人員理解,在不脫離以下所附權(quán)利要求所限定的精神和范圍的情況下,可做出許多修改,變化,或等效,但都將落入本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種變長數(shù)據(jù)存取方法,包括數(shù)據(jù)存儲(chǔ)階段和數(shù)據(jù)讀取階段兩部分,其特征在于,所述數(shù)據(jù)存儲(chǔ)階段包括以下步驟: Cl:將存儲(chǔ)介質(zhì)劃分為多個(gè)容量相等的存儲(chǔ)塊; C2:將所述變長數(shù)據(jù)按照字節(jié)數(shù)分割為多個(gè)含固定字節(jié)的數(shù)據(jù)段,對所述多個(gè)數(shù)據(jù)段進(jìn)行封裝,得到多個(gè)包含固定字節(jié)的數(shù)據(jù)包;所述多個(gè)數(shù)據(jù)包根據(jù)剩余長度分為首包、中間包和尾包,其中剩余長度是指包括當(dāng)前數(shù)據(jù)包及其之后的所有數(shù)據(jù)包的大小; C3:計(jì)算所述存儲(chǔ)塊的剩余空間,根據(jù)剩余空間大小確定安放所述變長數(shù)據(jù)的存儲(chǔ)塊,以保證同一條變長數(shù)據(jù)存儲(chǔ)在同一個(gè)存儲(chǔ)塊內(nèi); C4:將所述多個(gè)數(shù)據(jù)包依次存入確定好的存儲(chǔ)塊內(nèi); 所述數(shù)據(jù)讀取階段包括以下步驟: Dl:獲取所述變長數(shù)據(jù)的起始地址和終止地址; D2:去除所述存儲(chǔ)塊塊尾的冗余數(shù)據(jù),計(jì)算實(shí)際已用存儲(chǔ)空間; D3:按照固定長度讀取所述存儲(chǔ)塊中的數(shù)據(jù); D4:讀取至終止地址,數(shù)據(jù)讀取過程結(jié)束。
2.根據(jù)權(quán)利要求1所述的一種變長數(shù)據(jù)存取方法,其特征在于,步驟C2中對所述數(shù)據(jù)包的格式為: 標(biāo)志位+數(shù)據(jù)總長度+剩余長度+數(shù)據(jù)段+校驗(yàn)和 其中標(biāo)志位用于表示一個(gè)數(shù)據(jù)包的開始,數(shù)據(jù)總長度用于表示一條變長數(shù)據(jù)的總體長度,校驗(yàn)和用于進(jìn)行數(shù)據(jù)校驗(yàn)。
3.根據(jù)權(quán)利要求1所述的一種變長數(shù)據(jù)存取方法,其特征在于,所述步驟C3中確定存儲(chǔ)塊的方法為,比較存儲(chǔ)塊的剩余空間和要存儲(chǔ)的變長數(shù)據(jù)的大小,若剩余空間大于所述變長數(shù)據(jù)大小,則將所述變長數(shù)據(jù)存儲(chǔ)在所述存儲(chǔ)塊內(nèi);若剩余空間不足以存儲(chǔ)該變長數(shù)據(jù)的,該剩余空間將被舍棄,所述變長數(shù)據(jù)從下一個(gè)存儲(chǔ)塊的首部開始存儲(chǔ);同時(shí)記錄被舍棄的剩余空間數(shù)。
4.根據(jù)權(quán)利要求1所述的一種變長數(shù)據(jù)存取方法,其特征在于,所述步驟C4中還包括:判斷當(dāng)前數(shù)據(jù)包是否為首包,若是,重復(fù)步驟C3 ;若不是,直接存儲(chǔ)當(dāng)前數(shù)據(jù)包。
5.根據(jù)權(quán)利要求1所述的一種變長數(shù)據(jù)存取方法,其特征在于,當(dāng)步驟C2中分割后的數(shù)據(jù)段長度不足預(yù)設(shè)的固定字節(jié)的,不足部分用O填補(bǔ)。
6.根據(jù)權(quán)利要求1所述的一種變長數(shù)據(jù)存取方法,其特征在于,所述步驟D3中包括:讀取數(shù)據(jù)包中的標(biāo)志位,重新組裝原變長數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的一種變長數(shù)據(jù)存取方法,其特征在于,采用順序讀取或隨機(jī)讀取的方式讀取數(shù)據(jù)。
【文檔編號(hào)】G06F3/06GK103902228SQ201210581148
【公開日】2014年7月2日 申請日期:2012年12月27日 優(yōu)先權(quán)日:2012年12月27日
【發(fā)明者】黃和石, 甘景全, 李利, 吳巖, 灑西濤, 宋穎, 李少維, 魏賀生, 張巍, 單國軍 申請人:航天信息股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1