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.