Kotlin Program to Convert Byte Array to Hexadecimal

Example 1: Convert Byte Array to Hex value

fun main(args: Array<String>) {

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

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

When you run the program, the output will be:

0A020F0B

In the above program, we have a byte array named bytes. To convert byte array to hex value, we loop through each byte in the array and use String's format().

We use %02X to print two places (02) of Hexadecimal (X) value and store it in the string st.

This is a relatively slower process for large byte array conversion. We can dramatically increase the speed of execution using byte operations shown below.


Example 2: Convert Byte Array to Hex value using byte operations

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)

}

The output of the program is the same as Example 1.

Here's the equivalent Java code: Java program to convert byte array to hexadecimal.

Did you find this article helpful?