原文: https://www.programiz.com/kotlin-programming/examples/convert-byte-array-hexadecimal

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

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

  1. fun main(args: Array<String>) {
  2. val bytes = byteArrayOf(10, 2, 15, 11)
  3. for (b in bytes) {
  4. val st = String.format("%02X", b)
  5. print(st)
  6. }
  7. }

运行该程序时,输出为:

  1. 0A020F0B

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

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

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


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

  1. import kotlin.experimental.and
  2. private val hexArray = "0123456789ABCDEF".toCharArray()
  3. fun bytesToHex(bytes: ByteArray): String {
  4. val hexChars = CharArray(bytes.size * 2)
  5. for (j in bytes.indices) {
  6. val v = (bytes[j] and 0xFF.toByte()).toInt()
  7. hexChars[j * 2] = hexArray[v ushr 4]
  8. hexChars[j * 2 + 1] = hexArray[v and 0x0F]
  9. }
  10. return String(hexChars)
  11. }
  12. fun main(args: Array<String>) {
  13. val bytes = byteArrayOf(10, 2, 15, 11)
  14. val s = bytesToHex(bytes)
  15. println(s)
  16. }

该程序的输出与示例 1 相同。

以下是等效的 Java 代码: Java 程序:将字节数组转换为十六进制