c语言json2cbor,物联网专用数据交换格式CBOR

本文深入介绍了物联网领域专用的数据交换格式CBOR,它是一种轻量级的二进制JSON,适用于资源有限的终端。内容涵盖了CBOR的8个主类型、编码规则、与JSON的区别,以及在C语言中的应用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本文将介绍物联网领域的JSON格式——CBOR,CBOR是专门为受限制物联网终端设计的数据交换格式,该格式轻量间接,可以简单理解为二进制形式JSON格式。CBOR格式可以与COAP协议组合使用,犹如HTTP+JSON;另外,CBOR也是COSE的基础。

CBOR简述

CBOR可分为8个主类型(Major Type),CBOR格式为了定义8种不同的类型,采用首字节的高3位定义主类型。 首字节的低5位在不同的主类型表示长度(除主类型0和主类型1),如果长度指示不足,则依次使用后续字节。

主类型

名称

首字节

简单说明

主类型0

无符号整数

0x00或 0x10

基础类型

主类型1

负整数

0x20或 0x30

基础类型

主类型2

字节数组

0x40或 0x50

基础类型

主类型3

字符串

0x60或 0x70

基础类型

主类型4

数组

0x80或 0x90

组合类型,可嵌套任意类型

主类型5

键值对

0xA0或 0xB0

组合类型,可嵌套任意类型

主类型6

扩展

0xC0或 0xD0

扩展类型

主类型7

数组

0xE0或 0xF0

浮点数与简单类型

无符号整数 an unsigned integer

主类型0,无符号整数编码后首字节为0b000_XXXXX。为了表达不同长度的无符号整数,CBOR格式使用第一个字节的低5位表示整数类型

0b000_11000 uint8_t

0b000_11001 uint16_t

0b000_11010 uint32_t

0b000_11011 uint64_t

请注意,无符号整数0到23直接表达,无需使用整数类型。

例如:

10 编码后 0x0A

24 编码后 0x1818

100 编码后 0x1864

1000 编码后 0x1903E8

负整数 a negative integer

主类型1,无符号整数编码后首字节为0b001_XXXXX。负整数的编码方式与无符号整数相似。

例如:

-10 编码后 0x29

-24 编码后 0x37

-100 编码后 0x3863

-1000 编码后 0x3903E7

字节数组 a byte string

主类型2,字节数组编码后首字节为0b010_XXXXX。为了表达字节数组长度,如果字符数组的长度小于等于23,那么直接使用首字节的低5位表示;如果长度大于或等于24字节,那么使用第二个字节表示长度;如果长度大于等于256字节,那么使用第二和第三个字节表示长度。

76adec5e61f8

CBOR长度说明.png

CBOR格式中一般采用多字节组合的方式表达长度。CBOR这样的长度描述方法便于嵌入式设备使用C语言解析CBOR格式,节约宝贵的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值