You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS中用CocoaMQTT解码The Things Network payload的方法求助

解决iOS中The Things Network MQTT payload解码问题

针对你遇到的ASCII码数组形式payload解码问题,可通过以下两种方式处理:

直接利用系统API解码

message.payload是Data类型,直接使用String的初始化方法指定ASCII编码即可完成转换:

func mqtt(_ mqtt: CocoaMQTT, didReceiveMessage message: CocoaMQTTMessage, id: UInt16) {
    if let decodedString = String(data: message.payload, encoding: .ascii) {
        // 解码成功,处理得到的字符串
        print("解码结果:\(decodedString)")
    } else {
        print("ASCII编码解码失败")
    }
}

手动遍历字节转换

如果系统API解码失败,可手动遍历Data中的每个UInt8字节(对应ASCII码值),转换为字符后拼接成字符串:

func mqtt(_ mqtt: CocoaMQTT, didReceiveMessage message: CocoaMQTTMessage, id: UInt16) {
    let asciiCharacters = message.payload.map { Character(UnicodeScalar($0)) }
    let decodedString = String(asciiCharacters)
    print("手动解码结果:\(decodedString)")
}

相关参考内容

  • Apple官方文档中,String(data:encoding:)方法支持将Data转换为指定编码的字符串,涵盖ASCII、UTF-8等多种编码
  • Data类型的map方法可遍历字节集合,配合UnicodeScalar可实现字节到ASCII字符的精准转换

内容的提问来源于stack exchange,提问作者Huy Nguyen Quang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:17:11