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

> 原文： [https://www.programiz.com/kotlin-programming/examples/convert-byte-array-hexadecimal](https://www.programiz.com/kotlin-programming/examples/convert-byte-array-hexadecimal)

#### 在此程序中，您将学习在 Kotlin 中将字节数组转换为十六进制的不同技术。

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

```kt
fun main(args: Array<String>) {

    val bytes = byteArrayOf(10, 2, 15, 11)

    for (b in bytes) {
        val st = String.format("%02X", b)
        print(st)
    }

}
```

运行该程序时，输出为：

```kt
0A020F0B
```

在上面的程序中，我们有一个名为`bytes`的字节数组。 要将字节数组转换为十六进制值，我们遍历数组中的每个字节，并使用`String`的`format()`。

我们使用`%02X`打印十六进制（`X`）值的两个位置（`02`）并将其存储在字符串`st`中。

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

* * *

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

```kt
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 程序：将字节数组转换为十六进制](/java-programming/examples/convert-byte-array-hexadecimal "Java program to convert byte array to hexadecimal")。