Kotlin Native 开发 NSData转ByteArray

String转NSData

val nsdata = ("Hello" as NSString).dataUsingEncoding(NSUTF8StringEncoding)

val hello = "Hello"
NSData.create(bytes = hello.cstr.ptr, length = hello.length)

NSData转ByteArray

// 实现1
if (nsdata != null) {
    val byteArray = ByteArray(nsdata.length.toInt())
    byteArray.usePinned {
        memcpy(it.addressOf(0), nsdata.bytes, nsdata.length)
    }
}
// 实现2
val byteArray = ByteArray(data.length.toInt())
byteArray.apply {
  usePinned {
  		memcpy(it.addressOf(0), data.bytes, data.length)
	}
}
// 实现3
val byteArray = data.bytes?.readBytes(data.length.toInt())

ByteArray 转 NSData

var nsdata: NSData
byteArray?.usePinned {
    nsdata = NSData.dataWithBytes(it.addressOf(0), it.get().size.toULong())
}