Kotlin Native如何将ByteArray转换为String?

时间:2018-03-24 17:35:50

标签: kotlin kotlin-interop kotlin-native

我正在玩kotlin-native samples。 我想知道如何从String ByteArray获得pinned。只想在控制台中打印它。

2 个答案:

答案 0 :(得分:5)

似乎此API已更改

现在只需使用:string.toUtf8(start, end)

https://github.com/JetBrains/kotlin-native/commit/cba7319e982ed9ba2dceb517a481cb54ed1b9352#diff-45a5f8d37067266e27b76d1b68f01173

旧版本:

使用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

如果通过互操作C API使byteArray像CPointer<ByteVar>那样,请在Kotlin-Native中使用.toKString()

答案 1 :(得分:4)

如果您需要JVM的解决方案,因为stringFromUtf8仅适用于本机平台,请使用toString作为参数:{/ p>

val byteArray = "Hello World".toByteArray(Charsets.UTF_8)   
val str = byteArray.toString(Charsets.UTF_8)

如果您特别想要定位原生,请使用Charset