1

这是我对 Kotlin Multiplatform 的第一次实验,似乎我还没有完全掌握一些东西。

我的后端通过 UDP 多播中的套接字发送通知消息(我可能需要在每个平台上实现这部分,因为我认为 Kotlin 不会为我做这件事)。然后我想将此消息(以字节数组的形式)传递给我的公共模块。该模块负责解析消息并将结果返回给平台。

只是为了简化我的工作,我希望每个平台都返回 ByteArray 的test消息。

这是我的common.kt文件:

package org.kotlin.mpp.mobile

expect fun receivedEASNotification(): ByteArray

fun parseEASNotification(msg: ByteArray) {
  // Use receivedEASNotification()
}

这是安卓文件:

package org.kotlin.mpp.mobile

actual fun receivedEASNotification(): ByteArray {
  return "test".toByteArray(Charsets.UTF_8)
}

我的问题是iOS部分原因。我不知道如何将字符串转换为 ByteArray。有toCharArray()功能但没有toByteArray()。此外,还有toByte()功能。

actual fun receivedEASNotification(): ByteArray {
  return "test".toByteArray() // There is no such a function for iOS.
}
4

1 回答 1

0
import Foundation

// An input string.
let name = "perls"

// Get the String.UTF8View.
let bytes = name.utf8
print(bytes)

// Get an array from the UTF8View.
// ... This is a byte array of character data.
var buffer = [UInt8](bytes)

// Change the first byte in the byte array.
// The byte array is mutable.
buffer[0] = buffer[0] + UInt8(1)
print(buffer)

// Get a string from the byte array.
if let result = String(bytes: buffer, encoding: NSASCIIStringEncoding) {
    print(result)
}

输出:

perls
[113, 101, 114, 108, 115]
qerls
于 2019-03-03T05:32:18.757 回答