17
Tag myTag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Log.i("tag ID", myTag.getId().toString());

これにより、「[B @ 40521c40」のようなIDが得られますが、このIDは読み取りごとに変更されます。

どんな助けでも大歓迎です。

ありがとう。

4

4 に答える 4

16

それでもバイトを文字列に変換する必要があります。

private String bytesToHexString(byte[] src) {
    StringBuilder stringBuilder = new StringBuilder("0x");
    if (src == null || src.length <= 0) {
        return null;
    }

    char[] buffer = new char[2];
    for (int i = 0; i < src.length; i++) {
        buffer[0] = Character.forDigit((src[i] >>> 4) & 0x0F, 16);  
        buffer[1] = Character.forDigit(src[i] & 0x0F, 16);  
        System.out.println(buffer);
        stringBuilder.append(buffer);
    }

    return stringBuilder.toString();
}
于 2012-07-11T06:37:02.550 に答える
6

私は同様の問題に遭遇し、それを解決することができました。問題は文字列への変換です。

myTag.getId() はバイト配列を返します。これらのバイトを 16 進文字列に変換する必要があります。ここでstackoverflow.comで見つけた次の関数を使用しました

    final protected static char[] hexArray = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
public static String bytesToHex(byte[] bytes) {
    char[] hexChars = new char[bytes.length * 2];
    int v;
    for ( int j = 0; j < bytes.length; j++ ) {
        v = bytes[j] & 0xFF;
        hexChars[j * 2] = hexArray[v >>> 4];
        hexChars[j * 2 + 1] = hexArray[v & 0x0F];
    }
    return new String(hexChars);
}
于 2013-06-24T02:41:18.517 に答える
1

コトリン

バイト配列 ID を次の関数に渡すことでこれを解決しました。

private fun ByteArrayToHexString(inarray: ByteArray): String? {
    var i: Int
    var j: Int
    var `in`: Int
    val hex = arrayOf(
        "0",
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "A",
        "B",
        "C",
        "D",
        "E",
        "F"
    )
    var out = ""
    j = 0
    while (j < inarray.size) {
        `in` = inarray[j].toInt() and 0xff
        i = `in` shr 4 and 0x0f
        out += hex[i]
        i = `in` and 0x0f
        out += hex[i]
        ++j
    }
    return out
}

Java でのこの関数のソース: https://gist.github.com/luixal/5768921

于 2020-06-02T12:23:03.630 に答える