【发布时间】:2021-05-03 16:32:40
【问题描述】:
我正在开发一个 Android NFC 应用程序。这个应用程序可以扫描一个 NFC 标签(这里我有一个 NXP NTAG 5 boost 标签,它是一个 NFC Forum Type 5 标签)。
由于 NFC-V 标签的 UID 是反转的,我的目标是显示 NFC 标签的(重新)反转的 UID,其中每个字节由两个点分隔。
以下是我用来执行此操作的方法。它很好地反转了 UID 并将其转换为十六进制,但我不知道如何在每个其他字符之间插入一个“:”分隔符。
fun byteArrayToHexInversed(bytes: ByteArray): String {
//First reverse the UID
bytes.reverse()
//Then convert byteArray to Hexa
val hexChars = CharArray(bytes.size * 2)
for (j in bytes.indices) {
val v = bytes[j].toInt() and 0xFF
hexChars[j * 2] = hexArray[v ushr 4]
hexChars[j * 2 + 1] = hexArray[v and 0x0F]
}
//Finally return the String with the separators
return hexChars.joinToString(":") { byte ->
byte.toString().padStart(2, '0')
}
}
这是我的输入:
000839CB580104E0
这是我想要的输出:
E0:04:01:58:CB:39:08:00
【问题讨论】:
标签: android kotlin formatting uid