磁卡上的3 个Track 一般都是使用“位”(bit)方式来编码的。根据数据所在的Track 不同,5 个bit或7 个bit 组成一个字节。
Track1(IATA):记录密度为210BPI;可以记录0~9 数字及A~Z 字母等;总共可以记录多达79 个数字或字符(包含起始结束符和校验符);每个字符(一个字节)由7 个bit 组成。
由于Track1 上的信息不仅可以用数字0~9 来表示,还能用字母A~Z 来表示信息,因此Track1 上信息一般记录了磁卡的使用类型、范围等一些“标记”性、“说明”性的信息。例如银行用卡中,Track1 记录了用户的姓名,卡的有效使用期限以及其他的一些“标记”信息。
Track2(ABA):记录密度为75BPI;可以记录0~9 数字,不能记录A~Z 字符;总共可以记录多达40个数字(包含起始结束符和校验符);每个数据(一个字节)由5 个bit 组成。
Track3(THRIFT):记录密度为210BPI;可以记录0~9 数字,不能记录A~Z 字母;总共可以记录多达107 个数字或字符(包含起始结束符和校验符);每个字符(一个字节)由5 个bit 组成。
由于Track2 和3 上的信息只能用数字0~9 等来表示,不能用字母A~Z 来表示信息,因此在银行用卡中,Track2,3 一般用以记录用户的帐户信息、款项信息等等,当然还有一些银行所要求的特殊信息等。
在实际的应用开发中,如果我们希望在Track2 或3 中表示数字以外的信息,例如“ABC”等,一般应采用按照国际标准的ASCII 表来映射。例如,要记录字母“A”在Track2 或3 上时,则可以用“A”的ASCII值“0x41”来表示。“0x41”可以在Track2 或是 Track3 中用两个数据来表示:“4”和“1”,即“0101”和“0001”。