Kotlin Hex字符串解析

铲屎官是个程序员 2022年06月24日 289次浏览

背景

在开发调试中经常使用ByteArray进行调试,ByteArray的转换不可避免。但是不同的实现方式调用起来就缺别很大了,使用Kotlin的extension语法糖使用起来就很方便,静态方法实现转换与之无法比拟。

简单的ByteArray

val bytes = byteArrayOf(0x01, 0x02, 0x03, 0x04)

ByteArray转Hex字符串

fun ByteArray.toHex(): String = joinToString(separator = "") { eachByte -> "%02x".format(eachByte) }

Hex字符串转ByteArray

fun String.decodeHex(): ByteArray {
    check(length % 2 == 0) { "Must have an even length" }

    return chunked(2)
        .map { it.toInt(16).toByte() }
        .toByteArray()
}

简单使用

    fun helloWorld() {
        val bytes = byteArrayOf(0x01, 0x02, 0x03, 0x04)
        //to hex
        val byteArrayHex = bytes.toHex()
        println("bytes hex=${byteArrayHex}")
        //to ByteArray
        val byteArray = byteArrayHex.decodeHex()
    }