在此程序中,您将学习在Kotlin中将字节数组转换为十六进制的不同方法。
fun main(args: Array<String>) { val bytes = byteArrayOf(10, 2, 15, 11) for (b in bytes) { val st = String.format("%02X", b) print(st) } }
运行该程序时,输出为:
0A020F0B
在上面的程序中,我们有一个名为bytes的字节数组。为了将字节数组转换为十六进制值,我们循环遍历数组中的每个字节,并使用String的format()。
我们使用%02X打印两个位置(02)的十六进制(X)值,并将其存储在字符串st中。
对于大字节数组转换,这是相对较慢的过程。我们可以使用下面显示的字节操作大大提高执行速度。
import kotlin.experimental.and private val hexArray = "0123456789ABCDEF".toCharArray() fun bytesToHex(bytes: ByteArray): String { val hexChars = CharArray(bytes.size * 2) for (j in bytes.indices) { val v = (bytes[j] and 0xFF.toByte()).toInt() hexChars[j * 2] = hexArray[v ushr 4] hexChars[j * 2 + 1] = hexArray[v and 0x0F] } return String(hexChars) } fun main(args: Array<String>) { val bytes = byteArrayOf(10, 2, 15, 11) val s = bytesToHex(bytes) println(s) }
该程序的输出与示例1相同。
这是等效的Java代码:将字节数组转换为十六进制的Java程序。