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

如何解析iBeacon传输至服务器的rawData十六进制值?

iBeacon rawData 解析思路

rawData是BLE蓝牙广播包的十六进制字符串形式,BLE广播包由多个AD结构(长度+类型+数据)串联组成,每个AD结构的规则是:

  • 第1字节:长度(等于「类型字节数+数据字节数」,即后续N-1字节的总长度)
  • 第2字节:AD类型(标识该段数据的用途)
  • 剩余N-1字节:对应类型的数据

下面结合你提供的示例拆解解析过程:

示例2(标准iBeacon广播包)

rawData: 0201061AFF4C000215FDA50693A4E24FB1AFCFC6EB0764782527114CB9C5

按AD结构拆分解析:

  • 第一个AD结构:02 01 06
    • 02:长度(后续2字节:类型+数据)
    • 01:AD类型为「Flags(设备标识)」
    • 06:数据二进制为00000110,表示设备处于BLE可被发现模式且不支持传统蓝牙(BR/EDR)
  • 第二个AD结构:1A FF 4C000215FDA50693A4E24FB1AFCFC6EB0764782527114CB9C5
    • 1A:长度(后续26字节:类型+数据)
    • FF:AD类型为「厂商自定义数据」
    • 4C00:厂商ID(小端序,对应苹果的官方蓝牙厂商代码004C)
    • 0215:iBeacon固定标识(02是子类型,15表示后续数据长度为21字节)
    • 核心数据拆分:
      • UUID:FDA50693-A4E2-4FB1-AFCF-C6EB07647825(前16字节)
      • Major:2711(后续2字节,小端序转换:原十六进制1127→十进制10001)
      • Minor:4CB9(后续2字节,小端序转换:原十六进制B94C→十进制47436)
      • TX Power:C5(最后1字节,有符号十进制为-59,表示iBeacon在1米处的标准RSSI值,用于计算设备距离)

示例1(带自定义服务的扩展广播包)

rawData: 0201060303F1FF1716FDA50693A4E24FB1AFCFC6EB0764782527114CB9C564

比示例2多了一个AD结构:

  • 第二个AD结构:03 03 F1FF
    • 03:长度(后续3字节:类型+数据)
    • 03:AD类型为「完整16位服务UUID列表」
    • F1FF:自定义的16位服务UUID
  • 第三个AD结构:17 16 F1FFFDA50693A4E24FB1AFCFC6EB0764782527114CB9C564
    • 17:长度(后续23字节:类型+数据)
    • 16:AD类型为「16位UUID对应的服务数据」
    • F1FF:对应前面的自定义服务UUID
    • 剩余数据包含和iBeacon一致的UUID、Major、Minor,最后多了字节64(十进制100),这部分属于厂商自定义扩展字段,需要参考该iBeacon的具体协议文档解析

通用解析步骤

  1. 将rawData按每2个字符拆分,得到十六进制字节数组(比如020106拆成['02','01','06'])
  2. 循环遍历字节数组,逐个解析AD结构:
    • 取当前第一个字节作为长度N
    • 取第二个字节作为AD类型,查询蓝牙官方AD类型定义(比如01=Flags、FF=厂商自定义数据)
    • 取后续N-1字节作为对应类型的数据,按对应规则解析
  3. 针对iBeacon特定规则处理:
    • 厂商ID为004C时,按苹果iBeacon规范拆分UUID、Major、Minor、TX Power
    • Major/Minor是小端序存储,需要反转字节顺序后转十进制
    • TX Power是有符号8位整数,十六进制转十进制时要处理负数(比如C5转十进制为-59)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:25:16