处理安卓设备NFC读卡

C#WebAPI做服务端

APP使用 uni-app开发,

走了不少弯路,这里记录一下 获取 卡10进制ID的方法

商米POS、安卓移动设备(手机)通过NFC功能 读取 IC卡(仅读取ID),RFID卡(包含ID卡),获取卡号(10进制)
安卓设备读取的结果是 一个4位的Byte形数组,(Java Byte 取值范围为 -128 ~ 127)

例如 从移动设备读取的IC卡的ID (IC卡ID位是前4个字节)
=========================
卡信息:
ID :27 B6 15 4F
十进制10位ID:1326822951
十进制8位ID:02146631    
=========================


移动设备读取的原始结果为 [39,-74,21,79]

将该数组传到C#环境中做为卡ID进行相关处理

以下为C#的将原始数据处理成IC卡十进制ID(8位和10位)相关逻辑
===================
wiegand26标准 8位
wiegand34标准 10位
===================
1.C#中需要使用Int[]存储该数组(C# byte 取值范围为  0 ~ 255 ,Java Byte 取值范围为 -128 ~ 127)【重要】
2.将数组倒序 [39,-74,21,79] => [79,21,-74,39] 【重要】
3.将数组中小于0的数据+256 [79,21,-74,39] => [79,21,182,39]

4.获取对应的8位十进制ID
    取数组第二位,左补0,形成3位  21 > 021
    取数组第三位*256+第四位 左补0 形成5位  182*256+39 > 46631
    拼接得到 该IC的8位十进制ID 02146631
5.获取对应的10位十进制ID
    直接将数组(第三步得到的数组)转为10进制数据
    n1*256*256*256 + n2*256*256 + n3*256 + n4
    
    79*256*256*256 + 21*256*256 + 182*256 + 39 = 1325400064 +  1376256 + 46592 + 39 = 1326822951
 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐