android NFC getId()后进制转换

进制转换的代码详见我的另一篇博客:http://blog.csdn.net/yedajiang44/article/details/79556823

最近项目用到NFC,NFC的标签是嵌在手表上的

需求是这样的:手表显示NFC的TAGID(不是标签的ID,是TAGID),显示的时候是十进制,然后获取到ID后到服务端获取数据

本来这需求挺简单的,而且实现起来也没啥难度得意

那么我先获取TAGID的数据

 	// 取出封装在intent中的TAG
        Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);//也可使用intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)直接获取TAGID;
       	byte[] tagbytes = tagFromIntent.getId();

好了!TAGID的字节数据拿到了,那么下面应该是转换进制了,因为手表上显示的十进制

        ByteBuffer buffer = ByteBuffer.wrap(tagbytes);
        //不足十位数,左补0,这是厂家这么规定的
        //"%010d"中0代表前面要补的字符 10代表字符串长度,d表示参数为整数类型
        String NFC_ID= String.format("%010d", buffer.getInt());


这时候NFC_ID应该就是手表上显示的十进制数字了,满怀欢喜的run了一下

但是!!!!我这人最怕但是、、、、

显然是跟手表上的不一样,然后我又转成十六进制,又下了个读取NFC标签的应用,

做了下对比,下载的app转换成十六进制的数据跟我转换成十六进制的数据顺序是反过来的

好嘛!这是大小端的问题,这时候只需要在buff.mark();后面加上这行代码

        buffer.order(ByteOrder.LITTLE_ENDIAN);// 高字节在高地址, 低字节在低地址

再跑一下,这时候NFC_ID就跟手表上显示的一样了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值