我正在尝试使用Android 4.4使用phonegap和phonegap-nfc-master插件从NFC标签获取UID。这会返回一个十六进制字符串。 但是当我用Usb Nfc键盘模拟器(如:http://www.shopnfc.it/gb/nfc-readers-writers/40-usb-nfc-loginer-keyboard-emulator.html)读取相同的标签时,结果是十进制数。好。现在我正在尝试将dec转换为十六进制,但代码不匹配。 你能帮我吗? 感谢
修改 例如,Android返回ID 04a9dba2853280,键盘仿真器返回3685287048用于相同的标记。我试图通过删除一些字符来转换十六进制,但不是。我不理解这种转换的逻辑。该ID是唯一的,我认为只有转换问题。
答案 0 :(得分:1)
您收到的十进制数(3685287048)是十六进制表示的DBA90488
。因此,键盘仿真阅读器为您提供了标签UID的第一个级联级别部分(参见ISO / IEC 14443-3以供参考)。
对于具有7字节UID zzyyxxwwvvuutt
的标记(在您的情况下为04A9DBA2853280
),ISO 14443-3防冲突必须级联级别。 cascase级别1中的UID为88zzyyxx
(在您的情况下为8804A9DB
)。 88
是级联标记,用于区分(即产生4字节UID(仅使用单个级联级别)和具有较长UID(7/10字节)的标记之间的冲突)。级联级别2中的UID部分则为wwvvuutt
(在您的情况下为A2853280
)。
当读取器在级联级别1之后停止枚举过程时,它仅检测UID的第一部分(包括级联标记):88zzyyxx
。这转换为十进制数字:
xx_h * 2^24 + yy_h * 2^16 + zz_h * 2^8 + 88_h
在你的情况下:
DB_h * 2^24 + A9_h * 2^16 + 04_h * 2^8 + 88_h =
219 * 2^24 + 169 * 2^16 + 4 * 2^8 + 136 =
3674210304 + 11075584 + 1024 + 136 =
3685287048
答案 1 :(得分:1)
您购买的读卡器是专为Mifare芯片设计的,现在所有标签都有一个登录器,带有十六进制
http://www.shopnfc.it/en/nfc-readers-writers/61-nfc-loginer.html
它可以轻松读取NFC标签的唯一ID(UID),并自动将其写在显示屏上光标所在的位置,然后按下"也进入。因此,它可用于快速安全地访问PC /移动设备/平板电脑。