April Brother Wiki
  • English
  • 中文
  • English
  • 中文
  • BLE 中 16-bit 和 128-bit UUID 的对比

BLE 中 16-bit 和 128-bit UUID 的对比

BLE(低功耗蓝牙)中的 16-bit UUID 与 128-bit UUID 核心区别在于:16-bit 是蓝牙 SIG 分配的标准短标识,仅用于通用服务;128-bit 是完整唯一标识,用于自定义私有服务。选择 16-bit 的核心场景是:实现标准通用功能、追求极致传输效率与兼容性。

一、核心定义与本质关系

BLE 协议本质上 所有 UUID 都是 128-bit 的。16-bit UUID 并非独立存在,而是基于 蓝牙 SIG 固定的 Base UUID 进行的短缩映射:

  • 蓝牙 Base UUID(固定不变):

00000000-0000-1000-8000-00805F9B34FB

  • 16-bit → 128-bit 转换规则:

将 16-bit 值(如 0x180F)填入 Base UUID 的 0000xxxx 位置

示例:

  • 16-bit: 0x180F (电池服务)

  • 对应 128-bit: 0000**180F**-0000-1000-8000-00805F9B34FB

二、16-bit UUID vs 128-bit UUID:详细对比

维度16-bit UUID (短 UUID)128-bit UUID (长 UUID)
分配方蓝牙技术联盟 (SIG) 统一分配、官方维护任何开发者/厂商 可自由生成、自定义
唯一性全球唯一(SIG 分配)全球唯一(随机生成,冲突概率极低)
长度2 字节 (16 bits)16 字节 (128 bits)
格式0xXXXX (如 0x180D)8-4-4-4-12 十六进制 (如 ABCDEF12-...)
使用权限禁止自定义,只能使用 SIG 已分配值完全自定义,用于私有协议/功能
传输效率极高:广播/数据包中仅占 2 字节,省带宽、降功耗低:占 16 字节,数据量大、功耗高
内存/CPU匹配/存储开销极小,解析快开销大,比较与存储耗时更长
兼容性极佳:所有 BLE 设备/手机系统原生支持需客户端预先知晓,否则无法识别
典型用途标准服务(心率、电池、设备信息)厂商私有服务、自定义功能、专属协议

三、什么时候选择 16-bit UUID?

优先使用 16-bit UUID,当且仅当你的功能属于 BLE 标准通用场景:

1. 实现 SIG 定义的标准服务/特性

这是 唯一官方允许 使用 16-bit UUID 的场景。

  • 服务 (Service):

    • 0x180F:电池服务 (Battery Service)

    • 0x180A:设备信息服务 (Device Info)

    • 0x180D:心率服务 (Heart Rate)

  • 特性 (Characteristic):

    • 0x2A19:电池电量百分比

    • 0x2A37:心率测量值

声明:蓝牙®(Bluetooth®)是蓝牙技术联盟(Bluetooth SIG, Inc.)在美国及其他国家/地区注册的商标。本文仅用于介绍蓝牙®低功耗技术(BLE)中UUID的相关技术知识,不涉及任何商业推广,相关技术规范以蓝牙技术联盟官方发布的《蓝牙商标许可协议》及品牌指南为准。

Last Updated:
Contributors: yanc