跳到主要内容

Kotlin 程序:将字节数组转换为十六进制

示例1:将字节数组转换为十六进制值

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 的字节数组。为了将字节数组转换为十六进制值,我们循环遍历数组中的每个字节,并使用 Stringformat() 方法。

我们使用 %02X 来打印两个十六进制(X)值的两个位置(02),然后将其存储在字符串 st 中。

这是一个相对较慢的过程,对于大字节数组的转换,我们可以使用下面展示的字节操作来显著提高执行速度。

示例2:使用字节操作将字节数组转换为十六进制值

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].toInt() and 0xFF

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程序:将字节数组转换为十六进制