我一直在阅读
- X.690“信息技术 – ASN.1 编码规则:基本编码规则 (BER)、规范编码规则 (CER) 和可区分编码规则 (DER) 的规范”
特别是第 8.5.6.4 (d) 节,关于具有可变长度尾数和指数的 REAL 值的二进制编码,内容如下:
“如果位 2 到 1 为 11,则第二个内容八位字节编码八位字节的数量,例如X(作为无符号二进制数)用于编码指数的值,第三个内容为(X加 3)第(包括)内容八位字节将指数的值编码为二进制补码; X的值应至少为 1;传输的指数的前 9 位不应全为零或全为 1。
这是不一致的,因为从“第三个到 (X plus 3) [rd] ”的八位字节实际上是 X+1 个八位字节。
有人能澄清这部分吗?
我认为它应该读
“......那么第二个内容八位字节编码比八位字节数少一个,X说,......”
或者
“......第三个直到(X加2)nd(包括)内容八位字节......”
而且, X的最小值真的是 1,还是 0表示1 个八位字节?
附录:如果有人可以向我提供一些不同 BER 编码值的测试数据(八位字节字符串及其含义),那将很有帮助。
到目前为止我所拥有的是
- 09 00 = 0(零)
- 09 01 40 = +INF(无穷大)
- 09 01 41 = -INF
- 09 08 03 2b 31 2e 30 65 2b 30 = "+1.0e+0" = 1.0(精确十进制)
- 09 05 80 fe 55 55 55 = 1398101.25(二进制,0x555555 * 2^-2)
我不确定的一个例子是:
- ? 09 06 83 00 fc 00 00 01 = 0.0625(二进制,0x000001 * 2^-4)?
此外,似乎没有为 NaN (不是数字)定义编码。