Как конвертировать Kotlin ByteArray в NsData и наоборот - PullRequest
1 голос
/ 23 октября 2019

Борьба с мультиплатформенным проектом Kotlin У меня закончилась проблема необходимости работать с NsData на моей платформе iOS от sharedModule, работающей с Kotlin Native.

Из-за этого мне нужнопреобразуйте targetC NsData в Kotlin ByteArray и обратно. Кто-нибудь может помочь мне?

Большое вам спасибо

1 Ответ

2 голосов
/ 23 октября 2019

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()) 
}
...