常用进制转换、卡号转换、韦根协议转换
一、IC卡常用格式转换
IC卡一般读取的是厂商固化到0扇区第0块的4个字节数据。
如:数据为: 56 30 F0 09 (正序)
十位卡(正序):1446047753 (是将4字节16进制的物理卡号正序直接转换为10进制即可)
十位卡(反序):166735958 (将4字节16进制物理卡号先反序,再直接转换为10进制即可),一般默认用10位卡反序。
八位卡:取物理卡号前三字节(56 30 F0)
1、先将第一字节转换为10进制,一个十六进制数据转换为十进制最大255(为三位,不够三位时在前面补0)。0x56转为十进制为:86,不够三位,在前面补0,为:086
2、再将剩下的两位16进制数据:0x30F0转换为十进制数据,两位十六进制数据转换为十进制最大65535,0x30F0转换为十进制为:12528。
八位卡(正序)数据合计为:086 12528
八位卡(反序):先将取到的物理卡号前三字节反序(F0 30 56),再按照上述方法转换为10进制数据即可
数据为:0xF0 = 240 ,0X3056 = 12374 ,
数据合计为:24012374
二、韦根格式转换
1、韦根32协议:(直接将4字节物理卡号转换为二进制4*8 = 32位输出即可),如下 56 30 F0 09:
2、韦根34协议:在韦根32协议的基础上增加了两个校验位(奇偶校验),第1位和最后1位,如上图:韦根32原始二进制数据为:0101 0110 0011 0000 1111 0000 0000 1001
第1位校验:为2~17位(上述蓝色部分)的偶校验,即1有偶数个,值为0,如上,1有偶数个,则放一个校验位为0在第一位。
最后1位校验:为18~33位(上述红色部分)的奇校验,即1有奇数个,值为0,如上,1有偶数个,则放一个校验位为1在最后一位。
如下韦根34数据合计为:0010 1011 0001 1000 0111 1000 0000 0100 11 ,11后面默认补0,整体数据不变
转换为16进制如下:韦根控制器,韦根34输出显示如下十六进制数据:
3、韦根26协议:是用物理卡号前三字节转换而来,三个字节物理卡号转换为二进制为3*8=24位,同上,其中第一位为2~13位的偶校验,最后一位为14~25位的奇校验。
注:韦根只说了正序的情况,反序同理。
三、进制转换
1、十进制转二进制
方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。
例如:把十进制数 150 转换为 二进制数:如下:
2、二进制转十进制
方法为:把二进制数按权展开、相加即得十进制数。
3、二进制转八进制
方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。
4、八进制转成二进制
方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。
5、二进制转十六进制
方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。
6、十六进制转二进制
方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。
7、十进制转八进制或者十六进制
把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。
8、八进制或者十六进制转成十进制
方法为:把八进制、十六进制数按权展开、相加即得十进制数。
9、八进制 >十六进制
方法:将八进制转换为二进制,然后再将二进制转换为十六进制,小数点位置不变。
10、十六进制 >八进制
方法:将十六进制转换为二进制,然后再将二进制转换为八进制,小数点位置不变。