磁卡上的3 個Track 一般都是使用“位”(bit)方式來編碼的。根據(jù)數(shù)據(jù)所在的Track 不同,5 個bit或7 個bit 組成一個字節(jié)。
Track1(IATA):記錄密度為210BPI;可以記錄0~9 數(shù)字及A~Z 字母等;總共可以記錄多達79 個數(shù)字或字符(包含起始結束符和校驗符);每個字符(一個字節(jié))由7 個bit 組成。
由于Track1 上的信息不僅可以用數(shù)字0~9 來表示,還能用字母A~Z 來表示信息,因此Track1 上信息一般記錄了磁卡的使用類型、范圍等一些“標記”性、“說明”性的信息。例如銀行用卡中,Track1 記錄了用戶的姓名,卡的有效使用期限以及其他的一些“標記”信息。
Track2(ABA):記錄密度為75BPI;可以記錄0~9 數(shù)字,不能記錄A~Z 字符;總共可以記錄多達40個數(shù)字(包含起始結束符和校驗符);每個數(shù)據(jù)(一個字節(jié))由5 個bit 組成。
Track3(THRIFT):記錄密度為210BPI;可以記錄0~9 數(shù)字,不能記錄A~Z 字母;總共可以記錄多達107 個數(shù)字或字符(包含起始結束符和校驗符);每個字符(一個字節(jié))由5 個bit 組成。
由于Track2 和3 上的信息只能用數(shù)字0~9 等來表示,不能用字母A~Z 來表示信息,因此在銀行用卡中,Track2,3 一般用以記錄用戶的帳戶信息、款項信息等等,當然還有一些銀行所要求的特殊信息等。
在實際的應用開發(fā)中,如果我們希望在Track2 或3 中表示數(shù)字以外的信息,例如“ABC”等,一般應采用按照國際標準的ASCII 表來映射。例如,要記錄字母“A”在Track2 或3 上時,則可以用“A”的ASCII值“0x41”來表示。“0x41”可以在Track2 或是 Track3 中用兩個數(shù)據(jù)來表示:“4”和“1”,即“0101”和“0001”。