繁体   English   中英

如何将 KOTLIN 中的十六进制字符串转换为 ASCII 字符串

[英]how to convert Hex String to ASCII String in KOTLIN

我在带有 BLE 模块的应用程序中收到了一个六角字符串十六进制字符串

0031302D31300D0A

这个字符串在ASCII中是10-10\r\n (代表x轴和y轴的坐标)。 我尝试使用 toCharArray function 转换为数组中的 ASCII,并有可能解析字符串并获取 x 和 y 值,但它在 logcat [C@3cea859] 中返回这样的字符串

我还尝试创建一个 function 但它返回相同类型的字符串

fun String.decodeHex(): ByteArray{
        check(length % 2 == 0){"Must have an even length"}
        return chunked(2)
            .map { it.toInt(16).toByte() }
            .toByteArray()
    }

你快到了。 您只需要将 ByteArray 转换为字符串。 标准的toString()方法来自Any类型(相当于 Java 的Object )。 ByteArray 不会覆盖它来给你你想要的。 相反,使用String构造函数或toString(Charset) function:

fun String.decodeHex(): String {
    require(length % 2 == 0) {"Must have an even length"}
    return chunked(2)
        .map { it.toInt(16).toByte() }
        .toByteArray()
        .toString(Charsets.ISO_8859_1)  // Or whichever encoding your input uses
}

(另请注意,在该上下文中, requirecheck更合适。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM