Kotlin Native 如何将 ByteArray 转换为 String?
Posted
技术标签:
【中文标题】Kotlin Native 如何将 ByteArray 转换为 String?【英文标题】:Kotlin Native how to convert ByteArray to String? 【发布时间】:2018-09-03 04:48:06 【问题描述】:我在玩kotlin-native samples。
我想知道如何从pinned
ByteArray 获得String
。只想在控制台打印出来。
【问题讨论】:
在该数组中用于将字符转换为字节的编码是什么? 【参考方案1】:如果您需要 JVM 的解决方案,因为 stringFromUtf8
仅适用于本机平台,请使用 toString 和 Charset 作为参数:
val byteArray = "Hello World".toByteArray(Charsets.UTF_8)
val str = byteArray.toString(Charsets.UTF_8)
如果您只想定位原生,请使用Sin's solution。
【讨论】:
【参考方案2】:这个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。
如果 byteArray 通过互操作 C API 类似于 CPointer<ByteVar>
,请在 Kotlin-Native 中使用 .toKString()
【讨论】:
感谢@Willi Mentzel 为stringFromUtf8
的源代码添加参考。
非常感谢。但是我在引用的链接(here: StringBuilder.kt)中找不到stringFromUtf8
的来源。
此 API 已被弃用......ReplaceWith("string.toUtf8(start, end)" github.com/JetBrains/kotlin-native/commit/…
问题是关于将 ByteArray 转换为 String? string.toUtf8(start, end) 如何帮助我?以上是关于Kotlin Native 如何将 ByteArray 转换为 String?的主要内容,如果未能解决你的问题,请参考以下文章
使用来自 Kotlin/Native 和 Gradle 的 Apple 依赖项,更具体地说是 SwiftUI
如何在 kotlin native 中使用 swift 库?
在 Kotlin Native 中,如何在不使用 C 指针的情况下将对象保留在单独的线程中,并从任何其他线程中改变其状态?