新闻详情

新闻详情

首页 / 资讯中心 / 详情

【2019-08-31】【转】物联网专用数据交换格式CBOR

发布时间:2026/9/28 20:58:21来源:尧图网络
【2019-08-31】【转】物联网专用数据交换格式CBOR
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2019-08-31 标题【转】物联网专用数据交换格式CBOR分类编程 标签cbor物联网专用数据交换格式CBOR前言CBOR简述无符号整数 an unsigned integer负整数 a negative integer字节数组 a byte string字符串 a text string**数组 an arra****y of data items**键值对 a map of pairs of data items扩展类型浮点数与简单类型参考资料本文转自【 https://www.jianshu.com/p/76adec5e61f8 】有删改。前言CBOR是专门为受限制物联网终端设计的数据交换格式该格式轻量间接可以简单理解为二进制形式JSON格式。CBOR简述CBOR可分为8个主类型Major TypeCBOR格式为了定义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_t0b000_11001 uint16_t0b000_11010 uint32_t0b000_11011 uint64_t请注意无符号整数0到23直接表达无****需使用整数类型。例如10 编码后 0x0A24 编码后 0x1818100 编码后 0x18641000 编码后 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字节那么使用第二和第三个字节表示长度。CBOR格式中一般采用多字节组合的方式表达长度。CBOR这样的长度描述方法便于嵌入式设备使用C语言解析CBOR格式节约宝贵的栈空间与堆空间。例如HEX格式01020304 编码后 0x4401020304长度为23的字节数组 编码后 0x57XX…长度为24的字节数组 编码后 0x5818XX…长度为500的字节数组 编码后 0x5901F4XX…本质来说CBOR仅为这些原始的字节数组增加了一个长度描述。字符串 a text string主类型3。字符串类型编码后首字节为0b011_XXXXX。字符串格式与字节数组格式非常相似只是字节数组格式人类不可读而字符格式人类可读。字符串格式表达长度的方式与字节数组类型相似。例如“a” 编码后 0x6161“IETF” 编码后 0x6449455446长度为24的字符串编码后 0x781830XX…数组 an arra****y of data items主类型4。 数组编码后首字节为0b100_XXXXX。数组为一种复合类型可以与自身或其他类型嵌套。数组中数组元素个数不是编码后字节长度的表达方式与字节数组类型相似。例如[1,2,3] 编码后 0x83010203[1,[2,3], [4,5]] 编码后 0x8301820203820405此处包括3个数组第一个数组0x83表示元素个数为3第二个0x82b表示元素个数为2第3个编码后元素个数为3。[500, 501, 502] 编码后为0x831901F41901F51901F6不是0x8301F401F501F6键值对 a map of pairs of data items在JSON类型中键名Key必须为字符串但是在CBOR格式中键名Key可以是整数。CBOR通过这种方式可以节省物联网终端开销。主类型5。键值对编码后首字节为0b101_XXXXX。键值对也是一种复合类型可以嵌套任意类型。键值对类型中键值对个数不是编码后的字节长度的表达方式与字节类型表达方式相似。扩展类型主类型6。扩展类型编码后首字节为0b110_XXXXX。浮点数与简单类型主类型7。浮点数与简单类型编码后首字节为0b111_XXXXX。该类型定义了简单类型时间类型Date和Time、大整数Bignum10进制整数Decimal等。在主类型7中首字节的高3位固定为0b111首字节中低5位用于表示子类型。参考资料【 RFC7049 Concise Binary Object Representation (CBOR) 】
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Agent-Native应用架构实战:从概念到落地的关键设计 2026/9/28 23:38:59

Agent-Native应用架构实战:从概念到落地的关键设计

“agent-native”这个词最近在圈子里讨论度很高,我一开始以为是营销话术,毕竟“AI原生”“大模型驱动”这类概念这两年见得太多。直到自己动手把两个项目从“带AI的普通应用”重构为“以智能体为核心的应用”,踩了一堆文档里没写的坑&#xf…

阅读更多 →
中文NER模型实战:HMM/CRF/BiLSTM+CRF的Python实现与选型指南 2026/9/28 23:38:59

中文NER模型实战:HMM/CRF/BiLSTM+CRF的Python实现与选型指南

简介:这套面向中文命名实体识别(NER)任务的Python资源包,集成了HMM、CRF、BiLSTM、BiLSTMCRF等经典模型的完整实现,并配有包含人名、地名、机构名及“其它”类别的标注数据集。数据标签基于B/M/E位置标记形成10种类别&…

阅读更多 →
鱼鹰算法优化XGBoost:Matlab分类工程实战与调参指南 2026/9/28 23:38:59

鱼鹰算法优化XGBoost:Matlab分类工程实战与调参指南

简介:本资源面向计算机、电子信息工程、数学等专业的大学生及算法初学者,提供一套基于鱼鹰优化算法(OOA)优化XGBoost的分类预测完整方案,可用于课程设计、期末大作业与毕业设计。压缩包共18个文件,约53.69M…

阅读更多 →
SSM知识产权管理系统毕设实战指南 2026/9/28 23:38:59

SSM知识产权管理系统毕设实战指南

简介:这是一套面向计算机专业本科生的知识产权管理系统毕业设计源码,基于SSM(SpringSpringMVCMyBatis)框架开发,完整覆盖前后端功能与数据库设计,适用于Java课程设计、毕设选题及Web开发能力实训。资源共10…

阅读更多 →
Codex CLI 安装配置与 401 报错排查实战指南 2026/9/28 23:38:53

Codex CLI 安装配置与 401 报错排查实战指南

1. 从一次深夜报错说起:Codex 安装到底卡在哪如果你最近在折腾 Codex CLI,大概率经历过这样的场景:装完之后兴冲冲敲下第一条命令,终端直接甩回来一句unexpected status 401 unauthorized: missing bearer or basic authenticatio…

阅读更多 →
agent-native实战拆解:从核心架构到落地避坑 2026/9/28 23:38:53

agent-native实战拆解:从核心架构到落地避坑

“agent-native”这个词,最近在圈子里出现的频率高到让人没法忽视。我第一次认真琢磨它,是因为团队吵着要给一个内部运营系统“接Agent”,结果大家讨论了一周才发现,对“Agent到底该干什么”几乎没有共识。有人觉得是加个聊天入口…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉