计算机网络管理(第2版)的一些总结
类型 区分![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3e1106ea15c146686d142a32cfef3793.png)
例子:
1、BOOLEAN
布尔值的编码是简单类型,其值由一个八位组组成。
FALSE的编码为00 01 00
TURE的编码为 00 01 FF
第一个字节00 表示布尔类型的标签UNIVERSAL 1
第二个字节01表示值不会的长度为1个字节
第三个字节00或FF表示布尔值
标签中:
- 00:通用类型 因为在表2-3中可以查到
- 0:见上图简单类型和构造类型的分类
- 00001:就是UNIVERSAL 1
2、NULL
空值的编码是简单类型。长度值为0
空值的标签是UNIVERSAL 5
所以编码为05 00
3、INTERGER
整数值的编码是简单类型。UNIVERSAL 2
对于表示的值:
-
正数:
- 如果最高比特位为0则直接编码
- 如果最高比特位为1则在最高比特位之前(左边)增加一个全0的八位组
-
例:0 的编码为 02 01 00
-
127的编码为 02 01 7F (127 = 01111111B= 7F H)最高比特位为0
-
128的编码为 02 02 00 80 (122 = 10000000B= 80 H)最高比特位为1
-
256的编码为 02 02 01 00
-
(256 = 0001 0000 0000B= 100 H)最高比特位为0
-
负数
- 先取绝对值,按照正数的做法编码,再取反,加一。
- (讲的有点复杂可以看下面的图)
- 例:-129的编码为 02 02 FF 7F
5、BIT STRING
位串值的编码 可以是简单类型,也可以是构造类型
UNIVERSAL 3
直接上例子
简单类型的编码:
位串值:0A 3B 5F 29 1C D
- 最后的D为单个直接补零,变成
D0
因为是十六进制变为2进制其实是4个零,0 H = 0000B
补零后:0A 3B 5F 29 1C D0
-
还需要说明补零的个数 4个
所以在前面添加04
-
最后的值为
04 0A 3B 5F 29 1C D0
-
加上标签
03
长度为07
(7个 8位2进制数) -
变成了:
构造类型的编码:
为什么这么分?
6、OCTET STRING
"ACE"为字符串时,需要使用ASCLL值
ACE为数字是和BIG STRING类似,只是不需要添加表示填充个数的八位组,直接补0就行。
7、 OBJECT IDENTIFIER
参考资料:
- 计算机网络管理 (云红艳 、 高磊 、 杜祥军 、 赵志刚 等 著 )
- 周灵老师PPT内容