2014-03-26 78 views
0

我想从使用Android 4.4的NFC标签使用phonegap和phonegap-nfc-master插件获取UID。这返回给我一个十六进制字符串。 但是,当我读取与Usb Nfc键盘仿真器相同的标记(如:http://www.shopnfc.it/gb/nfc-readers-writers/40-usb-nfc-loginer-keyboard-emulator.html)结果是一个十进制数。好。现在我试图将dec转换为十六进制,但代码不匹配。 你能帮我吗? 由于NFC UID键盘仿真器/ Android

编辑: 例如,机器人返回ID 04a9dba2853280和键盘仿真返回3685287048为相同的标记。我试图通过删除一些字符来转换十六进制,但没有。我不明白这种转换的逻辑。该ID是独一无二的,我认为这只是一个转换问题。

+0

你得到了什么样的十进制数,以及你使用Android从同一个标记中读取了什么UID? –

+0

例如,Android返回ID 04a9dba2853280,键盘模拟器返回3685287048以获取相同的标记。我试图通过删除一些字符来转换十六进制,但没有。我不明白这种转换的逻辑。该ID是独一无二的,我认为这只是一个转换问题。 – user3464031

回答

1

您收到的十进制数(3685287048)是十六进制表示形式的DBA90488。因此,键盘仿真阅读器为您提供标记UID的第一个级联级别部分(请参阅ISO/IEC 14443-3以供参考)。

对于具有7字节UID zzyyxxwwvvuutt(在您的案例04A9DBA2853280)中的标签,ISO 14443-3防冲突必须级联级别。级联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 
+0

谢谢!非常详尽。但在这种情况下,不可能将3685287048转换为04A9DBA2853280 – user3464031

+0

正确,正如我上面所写的:您的键盘仿真读取器在级联级别1后停止,因此UID的剩余部分无法通过该读取器访问(除非存在配置选项来激活这个...)。实际上,这意味着如果您使用该阅读器,则只能看到UID的前三个字节。 –

+0

好的,非常感谢。我可以通过将hexadeciman Android的代码转换为键盘仿真的小数来解决此问题。在这种情况下,我可以比较值。谢谢 – user3464031

1

,你买了专为的Mifare芯片的读者,现在是所有的标签的loginer,用十六进制

http://www.shopnfc.it/en/nfc-readers-writers/61-nfc-loginer.html

它可以很容易地读出的NFC标签的唯一ID(UID),并且其中所述光标位于所述显示器上自动地将其写入,而“PRES s“也输入。出于这个原因,它可以用来快速安全地访问PC /手机/平板电脑。