gpt4 book ai didi

android - 如何在 Kotlin 多平台项目的 iOS 模块中将字符串转换为字节数组?

转载 作者:行者123 更新时间:2023-11-28 07:30:19 28 4
gpt4 key购买 nike

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

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

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

这是我的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.
}

最佳答案

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

关于android - 如何在 Kotlin 多平台项目的 iOS 模块中将字符串转换为字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54965691/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com