[英]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
}
(另请注意,在该上下文中, require
比check
更合适。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.