当前位置: 首页 > 知识库问答 >
问题:

如何使用Nexus 5读取Mifare Ultralight 16位UID

欧阳正谊
2023-03-14

我对Android的NFC很陌生。我需要大量Java代码示例或好的教程,以了解如何使用Nexus 5读取Mifare Ultralight 16位UID

我只知道如何从这里读取Mifare classic卡的标签UID,获得MifareClassic的7位数UID,但没有Mifare Ultralight的示例。

这是获取Mifare Classic UID的另一个示例。Mifare Ultralight需要更改哪些内容以使其读数符合Mifare Ultralight?而且我不理解ByteArrayToHexString()中执行的操作

byte[] nfcUID = null;
        if (intent != null && (nfcUID = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)) != null) {

            uid = ByteArrayToHexString(nfcUID);

private String ByteArrayToHexString(byte[] inarray) { // converts byte arrays to string
        int i, j, in;
        String[] hex = {
                "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"
        };
    String out = "";

    for (j = 0; j < inarray.length; ++j) {
        in = inarray[j] & 0xff;
        i = (in >> 4) & 0x0f;
        out += hex[i];
        i = in & 0x0f;
        out += hex[i];
    }
    return out;
}

非常感谢!

共有1个答案

卢文博
2023-03-14

首先,MIFARE Classic标记通常有一个4字节的UID(也称为nUID)。较新的MIFARE Classic标记还具有7字节的UID。MIFARE Ultralight标签始终具有7字节的UID。

此UID是您将从

byte[] uid = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);

或来自

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
byte[] uid = tag.getId();
    null
public static String convertByteArrayToHexString (byte[] b) {
    if (b != null) {
        StringBuilder s = new StringBuilder(2 * b.length);
        for (int i = 0; i < b.length; ++i) {
            final String t = Integer.toHexString(b[i]);
            final int l = t.length();
            if (l > 2) {
                s.append(t.substring(l - 2));
            } else {
                if (l == 1) {
                    s.append("0");
                }
                s.append(t);
            }
        }
        return s.toString();
    } else {
        return "";
    }
}
public static String convertByteArrayToDecString (byte[] b) {
    if (b != null) {
        BigInteger n = new BigInteger(1, b);
        return n.toString();
    } else {
        return "";
    }
}
 类似资料:
  • 问题内容: 我有一个文件,其中第一个字节包含编码信息。在Matlab中,我可以使用逐位读取字节,然后通过等读取每个位。 python中是否有任何等效的阅读器? 问题答案: 从文件中读取位,首先读取低位。

  • 问题内容: 我知道如何读取字节,但是如何在Python中读取位? 我只需要从二进制文件中读取5位(而不是8位[1字节]) 有什么想法或方法吗? 问题答案: Python一次只能读取一个字节。您需要读完整的字节,然后从该字节中提取所需的值,例如 或者,如果您想要5个最低有效位,而不是5个最高有效位: 一些其他有用的位操作信息可以在这里找到:http : //wiki.python.org/moin/

  • 问题内容: 我是JSON格式的新手,在阅读的教程中,我不太了解如何使用php进行解析。所以我有这个: 我想回显 坐标 和 reverseGeocode 。谁能请我朝正确的方向前进? 问题答案: 尝试跑步 您的示例JSON作为字符串在哪里。

  • 问题内容: 我正在使用Rselenium导航到网页。以下代码正在执行此操作。我没有提供该网址,因为我在需要VPN连接的公司中使用该网址: 导航到该网页后,在html源代码中,有下表: 现在的问题是如何提取该表的内容?请假定该URL不存在,否则我可以使用XML函数:readHTMLTable(remDr $ getCurrentUrl())。但这出于某些原因不起作用。我只需要使用remoteDriv

  • 问题内容: 我有一台扫描仪,并将定界符设置为“”,但是它仍然不会使用next()方法读取空格。我知道nextline()可以工作,但是我需要单独检查输入中的每个字符,包括空格;这是一个复杂的数据分析问题。不过我很困惑。谷歌什么也没发现。 谁能帮我这个?我正在考虑将空格反转为一个特殊字符,然后出于分析该字符的目的,将其反转回一个包含在字符串中的空格……这似乎有些过头了!有没有更优雅的方式做到这一点?

  • 我的flink程序应该为每个输入记录做一个Cassandra查找,并根据结果做一些进一步的处理。 但问题是,每次查找需要将近10秒,换句话说,这个循环需要50秒来执行。 我如何加快这个操作?或者,在Flink中有没有其他的方法可以查到Cassandra呢?