本發(fā)明屬于按位存儲(chǔ)檢索方法,尤其設(shè)計(jì)一種用于一卡通設(shè)備中的按位存儲(chǔ)檢索方法。
背景技術(shù):
計(jì)算機(jī)內(nèi)部數(shù)據(jù)的存儲(chǔ)和運(yùn)算都采用二進(jìn)制,以8個(gè)比特位構(gòu)成一個(gè)字節(jié),在一卡通應(yīng)用中,一個(gè)交易卡號(hào)可能由幾個(gè)字節(jié)組成,例如:四字節(jié)的IC卡的物理序列號(hào)。
IC卡終端設(shè)備,在交易時(shí),通信都需要以卡片的合法性做判斷,例如判斷卡片的卡號(hào)是否為白名單或黑名單;如果交易卡號(hào)在存儲(chǔ)器中是以按順序存儲(chǔ)的方法進(jìn)行存儲(chǔ),則名單的檢索通常也采用順序存儲(chǔ)的方法,依次一個(gè)卡號(hào)一個(gè)卡號(hào)的讀取,之后進(jìn)行判斷,這種檢索方式的缺點(diǎn)是:當(dāng)名單量比較多時(shí),檢索的時(shí)間通常也就比較長(zhǎng)。
如果名單在存儲(chǔ)時(shí),先經(jīng)過(guò)排序,之后在應(yīng)用時(shí),如果需要對(duì)名單進(jìn)行檢索、判斷,因先經(jīng)過(guò)排序,故這種方法的效率通常很高。但其存在如下缺點(diǎn):每增加或刪除一個(gè)名單,都需要對(duì)整個(gè)名單數(shù)據(jù)需要重新排序,并重新下傳名單至終端設(shè)備,故過(guò)于復(fù)雜,在校園應(yīng)用中,卡片的掛失,解掛基本上每天都會(huì)發(fā)生,故不便于校園一卡通這樣一個(gè)名單經(jīng)常發(fā)生變化的場(chǎng)合。
故針對(duì)上述缺陷,有必要研發(fā)一種用于一卡通設(shè)備中的按位存儲(chǔ)檢索方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提出一種用于一卡通設(shè)備中的按位存儲(chǔ)檢索方法,其用于解決現(xiàn)有技術(shù)中一卡通設(shè)備名單檢索時(shí)間長(zhǎng)及檢索過(guò)于復(fù)雜的缺陷。本發(fā)明存儲(chǔ)方式及檢索方式簡(jiǎn)單方便快捷,其按BIT位存儲(chǔ)的方式,大大減少數(shù)據(jù)存儲(chǔ)量。
本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
本發(fā)明公開(kāi)一種用于一卡通設(shè)備中的按位存儲(chǔ)檢索方法,其包括如下步驟:用于一卡通設(shè)備中的按位存儲(chǔ)檢索方法,其特征在于,包括如下步驟:
(1)計(jì)算一卡通設(shè)備的年發(fā)行量和總發(fā)行量Z,其中總發(fā)行量=年發(fā)行量*自然年度;
(2)按照BIT位存儲(chǔ)的方式,一個(gè)字節(jié)存儲(chǔ)一卡通設(shè)備的八個(gè)交易卡號(hào),通過(guò)總發(fā)行量/8計(jì)算出總發(fā)行量在存儲(chǔ)中所占用的字節(jié)數(shù);
(3)通過(guò)步驟(2)中計(jì)算出的字節(jié)數(shù),得出保存總發(fā)行量Z所需名單需要的存儲(chǔ)器容量X;
(4)發(fā)行卡片,交易卡號(hào)由1開(kāi)始,按照自然數(shù)的方式依次遞增;
(5)在存儲(chǔ)器中,根據(jù)一卡通設(shè)備的交易卡號(hào)Y計(jì)算出其在存儲(chǔ)器中的字節(jié)偏移地址N和在字節(jié)偏移地址N內(nèi)的BIT位M;
(6)通過(guò)字節(jié)偏移地址N和在字節(jié)偏移地址N內(nèi)的BIT位M計(jì)算出交易卡號(hào)的存儲(chǔ)位置。
其中,BIT位為0表示是有效名單,BIT位為1表示是無(wú)效名單;步驟(5)中的計(jì)算方法為:N=(Y-1)/8;M=(Y-1)%8。
優(yōu)選的,BIT位為0表示是無(wú)效名單,BIT位為1表示是有效名單;步驟(5)中的計(jì)算方法為:N=Y(jié)/8;M=Y(jié)%8。
其中,步驟(3)中存儲(chǔ)器容量X的計(jì)算方法為:X=Z/1024。
與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點(diǎn):本發(fā)明通過(guò)將按位存儲(chǔ)檢索方法用于一卡通設(shè)備中,其能通過(guò)計(jì)算出每個(gè)交易卡號(hào)的字節(jié)偏移地址及其BIT位,迅速將交易卡號(hào)進(jìn)行存儲(chǔ)和檢索,大大減少了數(shù)據(jù)存儲(chǔ)量。
具體實(shí)施方式
下面對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明公開(kāi)一種用于一卡通設(shè)備中的按位存儲(chǔ)檢索方法,其包括如下步驟:(1)計(jì)算一卡通設(shè)備的年發(fā)行量和總發(fā)行量Z,其中總發(fā)行量=年發(fā)行量*自然年度;(2)按照BIT位存儲(chǔ)的方式,一個(gè)字節(jié)存儲(chǔ)一卡通設(shè)備的八個(gè)交易卡號(hào),通過(guò)總發(fā)行量/8計(jì)算出總發(fā)行量在存儲(chǔ)中所占用的字節(jié)數(shù);(3)通過(guò)步驟(2)中計(jì)算出的字節(jié)數(shù),得出保存總發(fā)行量Z所需名單需要的存儲(chǔ)器容量X;(4)發(fā)行卡片,交易卡號(hào)由1開(kāi)始,按照自然數(shù)的方式依次遞增;(5)在存儲(chǔ)器中,BIT位為0表示是有效名單,BIT位為1表示是無(wú)效名單;根據(jù)一卡通設(shè)備的交易卡號(hào)Y計(jì)算出其在存儲(chǔ)器中的字節(jié)偏移地址N和在字節(jié)偏移地址N內(nèi)的BIT位M;(6)通過(guò)字節(jié)偏移地址N和在字節(jié)偏移地址N內(nèi)的BIT位M計(jì)算出交易卡號(hào)的存儲(chǔ)位置。
其中,步驟(5)中的計(jì)算方法為:N=(Y-1)/8(取模);M=(Y-1)%8(取余數(shù))。
其中,步驟(3)中存儲(chǔ)器容量X的計(jì)算方法為:X=Z/1024。
本發(fā)明在實(shí)際應(yīng)用過(guò)程中,步驟(5)中,本領(lǐng)域技術(shù)人員根據(jù)實(shí)際使用情況,可以在存儲(chǔ)器中設(shè)定BIT位為0表示是無(wú)效名單,BIT位為1表示是有效名單,則相應(yīng)的,在計(jì)算字節(jié)偏移地址N和在字節(jié)偏移地址N內(nèi)的BIT位M時(shí),其計(jì)算公式為:N=Y(jié)/8(取模);M=Y(jié)%8(取余數(shù))。
以校園一卡通一年發(fā)行3萬(wàn)個(gè)交易卡號(hào)為例,十年發(fā)行的交易卡號(hào)為30萬(wàn),三十年為90萬(wàn)交易卡號(hào),按100萬(wàn)交易卡號(hào)發(fā)行量,基本上就能滿足國(guó)內(nèi)普通高校的三十年的使用。
以100萬(wàn)的交易卡號(hào)發(fā)行量,按照上述方法可知:按BIT位存儲(chǔ)的方式,一字節(jié)能存8個(gè)交易卡號(hào),那么表示100萬(wàn)的交易卡號(hào)在存儲(chǔ)中所占用的字節(jié)數(shù)為1000000/8=125000,則保存100萬(wàn)的交易卡號(hào)需要的存儲(chǔ)器容量為125000/1024=122K字節(jié),按照目前常用的存儲(chǔ)器容量,選擇存儲(chǔ)器容量為128K字節(jié),其可保存1048576個(gè)交易卡號(hào)。
卡片發(fā)行時(shí),交易卡號(hào)由1開(kāi)始,按自然數(shù)的方式依次遞增;假設(shè)在存儲(chǔ)器中,以某個(gè)BIT位為0表示是一個(gè)有效的名單;BIT位為1表示為無(wú)效名單。那么通過(guò)如下計(jì)算方法就很方便的檢索定位到某個(gè)交易卡號(hào)(例如Y)在存儲(chǔ)在存儲(chǔ)器的第N字節(jié),第M位。
計(jì)算方法為:存儲(chǔ)的字節(jié)地址:N=(Y-1)/8;(取模),在地址N內(nèi)的BIT位:M=(Y-1)%8;(取余數(shù))。
如下表1為各交易卡號(hào)在存儲(chǔ)器中的地址。
表1
如上表1可知:
交易卡號(hào)是15,由它在存儲(chǔ)器中的地址為:N=(15-1)/8=1。
交易卡號(hào)是15,由它在存儲(chǔ)器中的位地址為:M=(15-1)%8=6。
即:交易卡為15,是保存在名單區(qū)偏移地址為1的字節(jié)單位,所在的BIT位為6。
根據(jù)以上算法,同理可計(jì)算出其它交易卡號(hào)在存儲(chǔ)器中的保存位置。如果需要增加某個(gè)有效交易卡號(hào),只要計(jì)算出該交易卡號(hào)的字節(jié)地址,把該字節(jié)地址的數(shù)據(jù)讀出,之后把對(duì)應(yīng)的BIT位置為1即可;如果要?jiǎng)h除某交易卡號(hào),則把相應(yīng)的BIT位清為零即可。故使用本發(fā)明的方法,能非常有效的將交易卡號(hào)進(jìn)行存儲(chǔ)及檢索。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。