web-dev-qa-db-ja.com

Kotlin Native ByteArrayを文字列に変換する方法は?

kotlin-native samples で遊んでいました。 StringByteArrayからpinnedを取得するにはどうすればよいでしょうか。コンソールで印刷したいだけです。

6
Stepango

このAPIが変更されたようです

今これを使用してください:string.toUtf8(start, end)

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

レガシーバージョン:

_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)
_

ここ を参照してください。

また、C APIを相互運用することでbyteArrayが_CPointer<ByteVar>_のようになっている場合は、Kotlin-Nativeで.toKString()を使用してください。

5
Sin

JVMのソリューションが必要な場合は、stringFromUtf8はネイティブプラットフォームでのみ使用できます。引数として toString を使用します Charset

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

特にネイティブのみをターゲットにする場合は、 Sinのソリューション を使用します。

7
Willi Mentzel