跳到主要内容

1. 引言 (Introduction)

1. 引言 (Introduction)

简洁二进制对象表示 (Concise Binary Object Representation, CBOR) [RFC7049] 支持在不要求预先约定模式的情况下交换结构化数据. [RFC7049] 定义了一组基本数据类型以及一种标记机制, 可通过 IANA 注册表扩展所支持的数据类型集合.

近来, 数值数据的简单类型化数组形式在 Web 图形社区 [TypedArray]、JavaScript 规范 (见 [ECMA-ES10] 第 22.2 节 (https://www.ecma-international.org/ecma-262/10.0/index.html#sec-typedarray-objects)) 以及相应实现 [ArrayBuffer] 中都受到关注.

由于这些类型化数组可能携带大量数据, 人们希望能够在 CBOR 中交换它们, 而不需要对数组中的每个数字进行冗长转换. 这还可以节省为数组每个元素编码类型所带来的空间开销.

本文档定义了若干相互关联的 CBOR 标签, 覆盖这些类型化数组, 并为多维数组和同构数组定义附加标签. 本文档旨在作为所定义标签的 IANA 注册参考文档.

注意, 使用这些标签生成 CBOR 的应用在选择变体方面拥有相当大的自由度, 例如字节序、嵌入类型 (有符号或无符号) 以及每个元素的位数; 也可以选择完全不使用本规范定义的标签而使用更基础的 CBOR. 与单个 CBOR 数字的表示变体不同, 这里没有可被标识为"首选"的表示. 如果某个使用这些标签的基于 CBOR 的协议需要确定性编码, 该协议必须为每个具体情况定义使用哪些编码变体.

1.1 术语 (Terminology)

本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" 和 "OPTIONAL" 只有在如本文所示全部大写出现时, 才应按 BCP 14 [RFC2119] [RFC8174] 中的描述解释.

术语 "byte" 按当前惯用意义使用, 作为 "octet" 的同义词. 在解释位运算时, 本文档使用 C 编程语言 [C] 中熟悉的记法 (包括 C++14 的 0bnnn 二进制字面量 [CPlusPlus]), 但操作符 "**" 例外, 它表示求幂.

除非另有说明, 本文档中的术语 "array" 按一般意义使用. 术语 "classical CBOR array" 描述以 CBOR major type 4 表示的数组. "homogeneous array" 是指所有元素均为同一类型的数组, 该术语不限定这是表示类型还是应用数据模型类型.

术语 "big endian" 和 "little endian" 分别用于表示整数的最高有效字节在前 (MSB first) 表示和最低有效字节在前 (LSB first) 表示.