数据类型定义
本文档定义了蓝牙通信协议中使用的各种数据类型和编码规范。
基本数据类型
协议中使用以下基本数据类型:
| 类型 | 长度类型 | 说明 |
|---|---|---|
| 整型 | 定长 | 由长度属性 u 指明长度 |
| 字符串 | 定长 | C 风格字符串,必须以二进制 0 结束。如果没有到达指定长度,用二进制 0 填充,编码格式采用 GBK |
| 字符串 | 变长 | C 风格字符串,必须以二进制 0 结束。编码格式采用 GBK |
| 二进制 | 变长 | 长度由其它字段给出 |
编码规范
字节序
字节序要求
对于多字节的字段传输采用大端序模式(网络字节序)
字符串编码
- 所有字符串采用 GBK 编码格式
- 定长字符串必须以二进制
0结束 - 未满指定长度的部分用二进制
0填充
二进制数据
- 二进制数据长度由协议中的其他字段指定
- 常见于加密密钥、签名等场景
示例说明
定长字符串示例
假设定义一个长度为 16 字节的用户名字段:
c
// 用户名 "张三" (GBK编码: 0xD5 0xC5 0xC8 0xFD)
char username[16] = {0xD5, 0xC5, 0xC8, 0xFD, 0x00, ...}; // 后续用0填充整型示例
c
// 4字节整型,大端序
uint32_t token = 0x12345678;
// 传输字节序列: 0x12 0x34 0x56 0x78