gpt4 book ai didi

android - 混合类型的Kotlin ByteArray

转载 作者:行者123 更新时间:2023-12-02 13:38:41 26 4
gpt4 key购买 nike

我需要在Kotlin中创建一个包含混合类型的字节数组。

具体来说,我需要编写如下内容:

0, 1, 0x02, 1, "me@emailaddr.com" 

使用Kotlin实现BLE的特性。

显然,我是Kotlin的新手。在Swift中完成此操作的便捷方法似乎在Kotlin中没有类似的功能。

我试过了:
data class BlePayload(val protoVer: Int, val transId: Int, val cmdType: Int, val valueType: Int, val value: String)

fun packagePayload(): BlePayload {
val checkinInfo: BlePayload = BlePayload(0, 1, 0x02, 1, "me@emailaddr.com")

return checkinInfo
}

...

private fun writeCharacteristic(characteristic: BluetoothGattCharacteristic) {
val payload = BluetoothUtils.packagePayload()

val strByteArray = payload.toString()
val byteArray = strByteArray.toByteArray()

mClientActionListener.log(TAG_GATT_CLIENT_CALLBACK, "Writing to characteristic ${characteristic.uuid}")
mClientActionListener.log(TAG_GATT_CLIENT_CALLBACK, "** strByteArray = $strByteArray")
mClientActionListener.log(TAG_GATT_CLIENT_CALLBACK, "** byteArray = $byteArray")
mClientActionListener.log(TAG_GATT_CLIENT_CALLBACK, "** Writing the Payload: $payload")

characteristic.setValue(byteArray)
}

但这似乎是麻烦和错误的。但是,我看不到其他解决方法。

它必须是外围设备的字节数组。

我找不到不先将其设置为字符串的字节数组的方法。

我没有办法直接进入混合类型的字节数组。

我敢肯定我一定是错的-我似乎太新了,无法理解Kotlin文档告诉我的内容。

感谢您的光临。

最佳答案

如果您可以通过图书馆来完成此任务,则可以考虑将Square的Okio用于此任务。过去,我曾将其用于此类摆弄。使用Okio,您的示例将如下所示:

fun packagePayload(): ByteArray =
Buffer()
.writeInt(0)
.writeInt(1)
.writeInt(2)
.writeInt(1)
.writeString("me@addr.com", Charsets.US_ASCII)
.readByteArray()

Okio还提供了上述方法的小端版本(即 writeIntLe())。

关于android - 混合类型的Kotlin ByteArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49519133/

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