English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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

Recueil d'exemples Kotlin

在此程序中,您将学习在Kotlin中将字节数组转换为十六进制的不同方法。

Exemple1:将字节数组转换为十六进制值

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中。

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

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

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)
}

La sortie du programme est comparable à l'exemple1Identique.

Voici le code Java équivalent :Programme Java qui convertit un tableau de bytes en hexadécimal.

Recueil d'exemples Kotlin