- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ASN.1基础 (更新)
显然,应用标签和字节串标签都编码了,因此它是构造类型。为了减少编码中的冗余信息,可使用隐含标签,重新定义如下: Password::=[APPLICATION 27] IMPLICIT OCTET STRING 则相应的编码为 5B 06 53 65 73 61 6D 65 从第一个字节看出它变为简单类型了,因为只有一种类型信息。 图4 个人记录的编码 下面是定义CHOICE类型的例子: EthernetAdapterNumber::=CHOICE{NULL, OCTET STRING} ANY类型表示任意类型的任意值,与CHOICE类型不同之处在于实际出现的类型也是未知的,通常记为 AnyType::=ANY | ANY DEFINED BY identifier 例如,我们可以定义 SoftwareVersion::=ANY 或SoftwareVersion::=ANY DEFINED BY INTEGER 子类型 子类型是由限制父类型的值集合而导出的类型,因此子类型的值集合是父类型的子集。子类型还可以再产生子类型。产生子类型的方法有6种,如表3所示。 表3 产生子类型的方法 1. 单个值 这种方法就是列出子类型可取的各个值。例如,我们可以定义小素数为整数类型的子集: SmallPrime::=INTEGER(2|3|5|7|11|13|15|17|19|23|29) 另外,如果定义Months为枚举类型: Months::=ENUMERATED{january(1),february(2),march(3),april(4),may(5), june(6),july(7),august(8),september(9),october(10), november(11),december(12)} 则可以定义First-quarter和Second-quarter为Months的子类型: First-quarter::=Months(january,february,march) Second-quarter::=Months(april,may,june) 2. 包含子类型 这里要用到关键字INCLUDES,说明被定义的类型包含了已有类型的所有的值。例如下面的定义: First-half::=Months(INCLUDES First-quarter | I NCLUDES Second-quarter) 另外,也可以直接列出被包含的值,例如 First-third::=Months(INCLUDES First-quarter | april) 3. 值区间 这种方法只能应用于整数和实数类型,指出子类型可取值的区间。在下面的定义中PLUS-INFINITY和MINUS-INFINITY分别表示正、负最大值,MAX和MIN分别表示父类型可允许的最大值和最小值,区间可以是闭区间或开区间。如果是开区间,则加上符号“”。因此下面4个定义是等价的: PositiveInteger::=INTEGER(0..PLUS-INFINITY) PositiveInteger::=INTEGER(1..PLUS-INFINITY) PositiveInteger::=INTEGER(0..MAX) PositiveInteger::=INTEGER(1..MAX) 同理,下面4个定义也是等价的: NegativeInteger::=INTEGER(MINUS-INFINITY..0) NegativeInteger::=INTEGER(MINUS-INFINITY..-1) NegativeInteger::=INTEGER(MIN..0) NegativeInteger::=INTEGER(MIN..-1) 4. 可用字符 这种方法只能用于字符串类型,限制可使用的字符集。下面是两个限制可用字符的例子: TouchToneButtons::=IA5String(FROM(0|1|2|3|4| 5|6|8|9|*|#)) DigitString::=IA5String(FROM(0|1|2|3|4| 5|6|8|9)) 5. 限制大小 可以对5种类型限制其规模大小,例如限制比特串、字节串或字符串的长度,限制构成序列或集合的元素(同类型)个数等。例如X.25(分组交换协议)公共数据网的地址由5~14个数字组成,这个规定可用下面的定义表示: It1DataNumber::=DigitS
您可能关注的文档
最近下载
- 呼吸道职业暴露处理流程试题(附答案).docx VIP
- 项目部安全文明施工措施费投入计划表.docx VIP
- 【行业分析书】《2021-2035》杯纸行业发展战略及杯纸行业壁垒突破分析.pdf VIP
- 校本教材劳动学习实践.docx VIP
- 质量· 食品安全· HACCP· 环境· 职业健康安全五合一管理体系管理手册.pdf VIP
- 石文操作手册V1.0.docx VIP
- 石文操作手册.pdf VIP
- 教师信息技术教师岗面试真题题库参考答案和答题要点.docx VIP
- 《等差数列》(公开课)-全国一等奖-名师版精品课件.pptx VIP
- 【课堂新坐标(教师用书)高中英语 Unit 1 Period V Culture Corner & Bulletin Board课件 北师大版必修1.ppt VIP
文档评论(0)