【发布时间】:2018-09-03 04:48:06
【问题描述】:
我在玩kotlin-native samples。
我想知道如何从pinned ByteArray 获得String。只想在控制台打印出来。
【问题讨论】:
-
在该数组中用于将字符转换为字节的编码是什么?
标签: kotlin kotlin-interop kotlin-native
我在玩kotlin-native samples。
我想知道如何从pinned ByteArray 获得String。只想在控制台打印出来。
【问题讨论】:
标签: kotlin kotlin-interop kotlin-native
如果您需要 JVM 的解决方案,因为 stringFromUtf8 仅适用于本机平台,请使用 toString 和 Charset 作为参数:
val byteArray = "Hello World".toByteArray(Charsets.UTF_8)
val str = byteArray.toString(Charsets.UTF_8)
如果您只想定位原生,请使用Sin's solution。
【讨论】:
现在只需使用这个:string.toUtf8(start, end)
使用stringFromUtf8
/**
* Converts an UTF-8 array into a [String]. Replaces invalid input sequences with a default character.
*/
fun ByteArray.stringFromUtf8(start: Int = 0, size: Int = this.size) : String =
stringFromUtf8Impl(start, size)
见here。
如果 byteArray 通过互操作 C API 类似于 CPointer<ByteVar>,请在 Kotlin-Native 中使用 .toKString()
【讨论】:
stringFromUtf8 的源代码添加参考。
stringFromUtf8的来源。