12

我在玩kotlin-native samples。我想知道如何StringpinnedByteArray 中获取信息。只想在控制台中打印它。

4

2 回答 2

17

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

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

如果您只想针对本机,请使用Sin 的解决方案

于 2018-03-24T18:08:39.253 回答
8

这个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)

这里

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

于 2018-03-24T18:29:54.653 回答