C# 服务端(API)连接 安卓设备 读取 IC卡(仅读取ID),RFID卡(包含ID卡),获取卡号(10进制)

处理安卓设备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
 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值