欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

实用的进制转换、卡号转换和韦根协议转换指南

最编程 2024-01-13 07:27:01
...

一、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、十六进制 >八进制

方法:将十六进制转换为二进制,然后再将二进制转换为八进制,小数点位置不变。

原文地址:https://www.cnblogs.com/gengtongyu/p/16564907.html