常用进制转换、卡号转换、韦根协议转换

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

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

  

 

 

 

 

  

 

posted @ 2022-08-09 11:25  耿通宇  阅读(9259)  评论(2编辑  收藏  举报