V型标签的UID似乎是“向后”

时间:2013-11-12 13:36:57

标签: android nfc iso-15693

我正在使用NFC构建一个使用RFID标签识别用户的应用程序。我可以正确阅读标签,没有问题。但是,当我使用“NFC TagInfo”应用程序时,我从Type V标签中收到了此ID:

e00401007539c2d3

当我自己阅读标签时,UID完全倒退:

d3c23975000104e0

V型标签的RF技术是 Type V(ISO / IEC 15693 / Vicinity)。我的代码似乎没有任何问题,因为其他标签( Type A(ISO / IEC 14443 Type A )工作正常。这就是我将byte[]转换为{{1}的方法。 }:

String

根据documentation

  

ID的大小和格式特定于标签使用的RF技术。

我试图搜索有关如何阅读特定技术的UID的更多信息,但找不到任何信息。

更新 here我发现,这是根据文档。但是,这导致了一个问题,即如何使标签的RF技术用于触发正确的UID public static String tagFromByte(byte[] __tagId) { String tagId = ""; for (byte b: __tagId) { tagId += String.format("%02x", b); } return tagId; } 实现?

2 个答案:

答案 0 :(得分:0)

您正在记录从0到7的标记,而它应该是另一种方式。

tagId[0]字节是最不重要的字节,因此最后一个字节。

记录如下:

for (int i = _tagId.length(); i > 0; --i) {
    tagId += String.format("%02x", _tagId[i]);
}

答案 1 :(得分:0)

Turns out,每种技术的UID并不总是相同的。这是解决方案。检查正在使用的技术并调用正确的函数将id作为String

protected String getId(Tag tag) {
String id = null;

if (NfcA.get(tag) != null) {
        id = byteToString(tag.getId());
    } else if (NfcV.get(tag) != null) {
        id = byteToStringReversed(tag.getId());
    }
    return id;
}