我一直在阅读:
- X.690 "信息技术 - ASN.1编码规则:基本编码规则(BER),规范编码规则(CER)和区分编码规则(DER)"
特别是,关于具有可变长度尾数和指数的实数值的二进制编码的§8.5.6.4(d)如下所示:
"如果位2到1为11,则第二个内容字节编码八位字节数,记为 X(作为无符号二进制数)用于编码指数的值,并且第三个到第(X+3)th(含)个内容字节以二进制补码数字编码指数的值;值X应至少为1;传输指数的前九位不能全部为零或全部为1。"
这是不一致的,因为从“第三个到(X+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(非数字)的编码。