如何将 Kotlin ByteArray 转换为 NsData,反之亦然

How to convert Kotlin ByteArray to NsData and viceversa

与 Kotlin Multiplatform 项目作斗争 我已经结束了需要在我的 iOS 平台上使用 NsDatasharedModule 使用 Kotlin Native 的问题。

因此,我需要将 objectiveC NsData 转换为 Kotlin ByteArray 并返回。我该怎么做?

NsData 到 ByteArray

actual typealias ImageBytes = NSData
actual fun ImageBytes.toByteArray(): ByteArray = ByteArray(this@toByteArray.length.toInt()).apply {
    usePinned {
        memcpy(it.addressOf(0), this@toByteArray.bytes, this@toByteArray.length)
    }
}

ByteArray 到 NsData

actual fun ByteArray.toImageBytes(): ImageBytes? = memScoped {
    val string = NSString.create(string = this@toImageBytes.decodeToString())
    return string.dataUsingEncoding(NSUTF8StringEncoding)
}

ByteArray 到 NsData 的不同方式

actual fun ByteArray.toImageBytes() : ImageBytes = memScoped { 
    NSData.create(bytes = allocArrayOf(this@toImageBytes), 
        length = this@toImageBytes.size.toULong()) 
}