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

Swift中如何将BLE特征值的length、bytes数据转换为字符串

实现方案

前置扩展(通用工具)

给Swift原生Data添加十六进制字符串转换能力,全局可复用:

extension Data {
    /// 转换为小写十六进制字符串
    var hexString: String {
        return map { String(format: "%02hhx", $0) }.joined()
    }
}

如果需要大写十六进制,将格式符%02hhx替换为%02hhX即可。

1. 提取0x开头的纯十六进制特征值

// 安全解包特征值,禁止使用!强制解包避免崩溃
if let value = characteristic.value {
    let resultHex = "0x" + value.hexString
    print(resultHex) // 输出示例:0xfdf648dc3ae1697b
}

2. 生成指定格式的完整字符串

直接手动拼接即可得到{length = 8, bytes = 0xfdf648dc3ae1697b}格式的结果:

if let value = characteristic.value {
    let formatResult = "{length = \(value.count), bytes = 0x\(value.hexString)}"
    print(formatResult) // 完全匹配你需要的输出格式
}

注意事项

  • 不要依赖String(describing: NSData())的输出做格式截取,系统对NSData的描述文本可能随iOS版本迭代调整,手动拼接的兼容性和可控性更强
  • 蓝牙特征值characteristic.value为可选类型,必须使用if let/guard let安全解包,空值下强制解包会直接触发App崩溃

内容的提问来源于stack exchange,提问作者codethesolution

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 16:27:04