1

我很困惑为什么 CBOR 选择将负整数编码为无符号二进制数,其值定义为 -1 减去无符号值,而不是例如常规二进制补码表示。除了增加的负范围(IMO,与增加的复杂性相比,它的价值值得怀疑)之外,我是否还缺少一个明显的优势?

4

1 回答 1

2

优点:

  1. 每个整数值只有一种允许的编码类型,因此所有编码器都会发出一致的输出。如果编码器按照规范建议对每个值使用最短编码,它们将发出相同的输出。
  2. 非负数比有符号负数更容易选择最短的数字字段,CBOR 旨在让微型 IOT 设备轻松传输数据。
  3. 它将两倍的值放入每个整数编码字段宽度,从而使数据更紧凑。(如果整数编码不重叠,它会更加紧凑,但这会更加复杂。)
  4. 在需要 bignum 扩展之前,它可以处理两倍大的负值。
于 2018-08-29T05:16:51.547 回答