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

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战