因此,我理解当值小于127时对值进行编码的方式。但是,在阅读https://docs.microsoft.com/en-us/windows/desktop/seccertenroll/about-object-identifier之后,我仍然不明白如何对大于128的值进行编码。例如:
1.3.6.1.4.1.311.21.20
被编码为:
2b 06 01 04 01 82 37 15 14
311
如何编码为82 37
?将8237
转换为十进制时,将得到33335
。我不太清楚这部分。
答案 0 :(得分:4)
This article应该可以帮助您理解编码。
使用7位编码,而第8位(MSB)用于指示编码结束。
82 37
为二进制10000010 00110111
。您可以看到它由2部分组成。第一部分的MSB设置为1,但是第二部分(在这种情况下也是最后一部分)的MSB设置为0,表示编码结束。如果您对此进行了解码(从第一部分开始忽略了MSB),它将是0000 0010 = 256 (2*128)
+ 0011 0111 = 55 (2^0 + 2^1 + 2^2 + 2^4 + 2^5)
= 311