• 2.29 MB
  • 2022-04-22 13:45:12 发布

GBT16263.2-2006信息技术ASN.1编码规则第2部分:紧缩编码规则(PER)规范.pdf

  • 56页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'ICS35.100.60L79G1ksi中华人民共和国国家标准GB/T16263.2-2006八SO八EC8825-2:2002信息技术ASN.1编码规则第2部分:紧缩编码规则(PER)规范Informationtechnology-ASN.1encodingrules-Part2:SpecificationofPackedEncodingRules(PER)(ISO/IEC8825-2:2002,IDT)2006-03-14发布2006-07-01实施中华人民共和国国家质量监督检验检疫总局发布中国国家标准化管理委员会 GB/T16263.2-2006/ISO/IEC8825-2:2002目次前言···············································································,··,,,·························⋯⋯班引言···························,,,··················,、·············,···············································⋯⋯IV1范围·····,·························,································,·····························,················⋯⋯12规范性引用文件···············································..···········⋯⋯,.··········...........⋯⋯,二13术语和定义··························,··································,···························,,·······⋯⋯13.1基本记法规范····,,,,,···11·····,,,,············,············,,···4··....⋯⋯,二.O..⋯23.2信息客体规范·········,······,··················································,,,····················..⋯⋯23.3约束规范·························,················································,··························⋯⋯23.4ASN.1规范的参数化····················,···,·······⋯⋯,.············⋯⋯,·....................⋯⋯23.5基本编码规则·············」································....·········⋯⋯,,,,·1“11··⋯,,,,,.‘⋯⋯,23.6附加定义··············,···································,,,···································,···.······⋯⋯24缩略语·············,·································································,····,·····················⋯⋯55记法·····,················,····························································,··················,·······⋯⋯66约定·························,··································,································,···············⋯⋯6www.17jzw.co7本部分定义的编码规则································,,,,,,,········.·················..⋯⋯,,,........⋯⋯68一致性·········································································,································⋯⋯79PER使用的编码方法·················································································...··...⋯⋯79.1类型记法的使用······································,··························.........................⋯⋯79.2使用标签以提供正则次序·‘······,,,,····1·····,,,,,·,·····,,,,,,..···.....一,,,,..·.⋯⋯,,79.3PER可视约束,··········-···············································⋯⋯,.,,,··········...⋯⋯,·····.⋯⋯79.4编码使用的类型和值模型·····································································.⋯⋯,,二,⋯99.5编码的结构·············,··················,·································,·····⋯⋯,,,,...........··...⋯⋯99.6被编码的类型······,,·············,···························,,············⋯⋯,.·······⋯⋯,.....···⋯⋯1010编码过程·············,,··················,·················,,,,·············································⋯⋯1010.1完整编码的产生式····························································,,····⋯⋯,........·····⋯⋯10www.17bzw.c10.2开放类型字段···················,·····················⋯⋯,············⋯⋯,,·······⋯⋯,.......⋯⋯1110.3非负二进制整数的编码····················································,·,·········⋯⋯,,,,,···.⋯⋯,1110.42的补码二进制整数的编码·········,,·····································,············,,····,·····⋯⋯1110.5受约束的整个数的编码··································,,····················.········........一,.,,.⋯1210.6正常小非负整个数的编码··········································································...⋯⋯1310.7半受约束的整个数的编码···········,············································⋯⋯,..............⋯⋯1310.8不受约束的整个数的编码··,····················,,,,,··,··,,,,,,,······一,,,..···..⋯⋯1310.9长度决定因子的编码的一般规则······························································,,⋯⋯,⋯1311布尔类型的编码··············,··············‘························⋯⋯,,.......·········...........····⋯⋯1612整数类型的编码·········,···················································································,·⋯1613枚举类型的编码·····,················,,·······················⋯⋯,.................................⋯⋯17www.17jzw.ne14实数类型的编码······,,,····‘···········,,·····················..···························.......⋯⋯1715位串类型的编码·····························,········,·····················⋯⋯...................·····⋯⋯17www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:200216八位位组串类型的编码····,······················,········,,·····················-······················⋯⋯181?空值类型的编码.................................................·····································,····⋯1918序列类型的编码········,·············,·,···························································,,········一1919单一序列类型的编码·-,·,···········,·····,,,,······,···,············1····,,,,】1···········⋯⋯2020集合类型的编码··············································,··,···················,··················,···⋯⋯2021单一集合类型的编码,,················································,····,····.....................·一2122选择类型的编码····,,,,···-··············,·,,················,,················,,···,···,·········,·······⋯⋯2123客体标识符类型的编码······,·····················································,······················⋯⋯2224相关客体标识符类型的编码,·····················,,··,········,·········,···,,···········,···············⋯⋯2225嵌人式pdv类型的编码··.......................................................................................2226外部类型值的编码···,,··-·····‘·,,·,········‘···,····,,,·····,,,·,,·-····‘1·,·,,,,,·一2327受限字符串类型的编码···················“‘,,,,········,,,,················,,,··············,·······,,,二2428不受限字符串类型的编码················,···················,·····················,···············⋯⋯‘’··⋯2529传送语法的客体标识符···············,·····,··················,··········,,···············,················,·⋯26附录A(资料性附录)编码实例·········,,·,········,····················,,······················⋯⋯“‘⋯⋯27A.1不使用子类型约束的记录·、······,······,·····,·············,··············,,···,·、、··········,,,,·,··⋯⋯27A.2使用子类型约束的记录·······,...........................··,,,,,,··,,·········,·,,,··。···一31A.3使用扩展标记的记录·············,···································································⋯⋯35A.4使用扩展附加组的记录············,······················,···········,··········,·····················⋯⋯40附录B(资料性附录)组合PER可视约束和PER非可视约束··········,······..................··⋯43B.1概述·,,,···,,·································,··········,········,·················,··················,,···⋯⋯43B.2PER中约束的可扩展性和可视性,,················,·················,,········、··········,,······‘···,⋯43B.3示例,·,·················,············,,····,··········,······,,································,···,·····⋯⋯46附录C(资料性附录)对PER算法的支持·················································⋯⋯48附录B(资料性附录)对可扩展ASN.1规则的支持···,···1‘·····,,-·····。···,,,·····““··⋯49附录E(资料性附录)关于PER编码拼接的指导附录···············································⋯⋯5o附录F(资料性附录)客体标识符值的赋值····························,······························」··,·⋯51 GB/T16263.2-2006/ISO/IEC8825-2:2002月U吕GB/T16263-2006在《信息技术ASN.1编码规则》的总标题下,目前包括以下两个部分:—第1部分(即GB/T16263.1):基本编码规则(BER)、正则编码规则(CER)和非典型编码规则(DER)规范;—第2部分(即GB/T16263.2):紧缩编码规则(PER)规范。本部分为GB/T16263的第2部分,等同采用国际标准ISO/IEC8825-2:2002《信息技术ASN.1编码规则紧缩编码规则(PER)规范)(英文版)。与该项国际标准等同的文本是ITU-T建议X.691.按照GB/T1.1-2000的规定,本部分对ISO/IEC8825-2:2002做了下列编辑性修改:a)“本标准”一词改为“本部分,’;b)在引用的标准中,凡已转化为我国标准的各项标准,均用我国的相应标准编号代替。对“规范,隆引用文件”一章中的标准按GB/T1.1-200。的规定进行了重新排列。本部分的附录A、附录B、附录C、附录D、附录E和附录F是资料性附录。本部分由中华人民共和国信息产业部提出。本部分由中国电子标准化研究所归口。本部分由北京信息工程学院、中国电子技术标准化研究所负责起草。www.17jzw.co本部分主要起草人:王凌、郑洪仁、张红。www.17bzw.cwww.17jzw.newww.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002引言GB/T16262.1,GB/T16262.2,GB/T.16262.3和GB/T16262.4共同描述了抽象语法记法一(ASN.1),这种记法就对等应用之间交换的报文进行了定义本部分定义的编码规则适用于使用GB/T16262.1规定的记法所确定的类型值。应用这些编码规则产生对这些值的传送语法。这些编码规则规范也隐含适用于解码。ASN.1的类型值应用的编码规则可以有多种集合。本部分定义了紧缩编码规则(PER)。之所以称为紧缩编码规则集合,是因为这种编码规则获得了比GB/T16263.1中描述的基本编码规则(BER)及它派生的编码规则更紧凑的表示,GB/T16263.1是紧缩编码规则规范的某些部分的参考。 GB/T16263.2-2006/ISO八EC8825-2:2002信息技术ASN.1编码规则第2部分:紧缩编码规则(PER)规范范围本部分规定了紧缩编码规则集合,它们可以用来为GB/T16262.1中定义的类型值派生传送语法。这些紧缩编码规则也适用于解码这样的传送语法,以便标识出被传送的数据值。本部分规定的编码规则:—在通信时使用;—在选择编码规则时主要关心值的最小化表示规模的场合中使用;—对在GB/T16262.1中描述的所有扩展形式,在保留现有值的编码时,允许通过增加额外值进行抽象语法的扩展2规范性引用文件下列文件中的条款通过GB/T16263的本部分的引用而成为本部分的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本部分,然而,鼓励根据本部分达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本www.17jzw.co部分。GB/T1988-1998信息技术信息交换用七位编码字符集(eqvISO/IEC646;1991)GB/T2311-2000信息技术字符码结构和扩展技术(idtISO/IEC2022;1994)GB/T9387.1-1998信息技术开放系统互连基本参考模型第1部分:基本模型(idtISO/IEC7498-1:1994)GB/T12054-1989数据处理转义序列登记规程(neqISO2375:1985)GB13000.1-1993信息技术通用多八位编码字符集(UCS)第1部分:体系结构与基本多文种平面(idtISO/IEC10646;2000)GB/T16262.1-2006信息技术抽象语法记法一(ASN.1)第1部分:基本记法规范(ISO/IEC8824-1:2002,IDT)GB/T16262.2-2006信息技术抽象语法记法一(ASN.1)第2部分:信息客体规范(ISO/www.17bzw.cIEC8824-2;2002,IDT)GB/T16262.3-2006信息技术抽象语法记法一(ASN.1)第3部分:约束规范(1SO/IEC8824-3:2002,IDT)GB/T16262.4-2006信息技术抽象语法记法一(ASN.1)第4部分:ASN.1规范的参数化(ISO/IEC8824-4:2002,IDT)GB/T16263.1-2006信息技术ASN.1编码规则第1部分:基本编码规则(BER)、正则编码规则(CER)和非典型编码规则(DER)的规范(ISO/IEC8825-1:2002,IDT)SJ/Z9047-1987信息处理信息交换用字符串形式表示数值的方法(idtISO6093;1985)要与转义序列一起使用的编码字符集的ISO国际登记簿3术语和定义www.17jzw.ne下列术语和定义适用于本部分。www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:20023.1基本记法规范GB/T16262.1-2006中的所有术语和定义适用于本部分。3.2信息客体规范GB/T16262.2-2006中的所有术语和定义适用于本部分。3.3约束规范本部分使用GB/T16262.3-2006中定义的下列术语和定义:a)成分关系约束(componentrelationconstraint);b)表约束(tableconstraint).3.4ASN.1规范的参数化本部分使用GB/T16262.4-2006中定义的下列术语和定义:可变约束(variableconstraint)3.5基本编码规则本部分使用GB/T16263.1-2006中定义的下列术语和定义:a)动态一致性(dynamicconformance);b)静态一致性(staticconformance);c)数据值(datavalue);d)(数据值的)编码(encoding(ofadatavalue));e)发送器(sender);f)接收器(receiver).3.6附加定义下列术语和定义适用于本部分3.6.12的补码的二进制整数编码2"s-complement-binary-integerencoding把整个数编码到指定长度的位字段(在ALIGNED变体中八位位组对齐)中,或者编码到可接纳该整个数编码为2的补码的整数的最小数目的八位位组中,该编码按照10.4所规定的等于、大于或小于。的整个数提供表示注1;2的补码的二进制数的值通过计数内容八位位组中的位得出,计数从最后1个八位位组的位1开始作为位。,到第1个八位位组的位8结束.每位赋予一个2"的数值,这里N是该位在上面计数顺序中的位置。2的补码的二进制数的值利用下列方法得出,即,累加计算那些置I的位的数值,但不包括第I个八位位组的位8.然后,若第1个八位位组的位8置为1,则这个累加值减去赋给位8的数值。注2:整个数(wholenumber)是数学术语整数(integer)的同义词。这里使用它是为了避免与ASK1的类型整数(integer)混淆3.6,2抽象语法值abstractsyntaxvalue要由PER编码或由PER解码生成的抽象语法值(定义为单个ASN.1类型值的集合)。注:与抽象语法相关联的单个ASN.1类型由类"ABSTRACT-SYNTAX”的客体形式地标识3.6.3位字段bit-field编码机制某一部分的产物,由有序的位集合构成,这些位不必是8的倍数。注:若该术语的使用后面紧跟"ALIGNED变体中八位位组对齐”,这意味着对PER的对齐变体来说,该位字段要求完枯的编码在八位位组边界上开始。正WIJ编码canonicalencoding抽象语法值的一种完整编码,它通过使用没有实现相关的选项的编码规则获得;这种规则使得在传 GB/T16263.2-2006八SO/IEC8825-2:2002送语法中的无歧义且唯一的位串与抽象语法中的值之间产生一对一映射的定义。3.6.5复合类型compositetype集合、序列、单一集合、单一序列、选择、嵌人式pdv、外部或者不受限的字符串类型。3.6.6复合值compositevalue复合类型的值3.6.7受约束的整个数constrainedwholenumber受PER可视约束所约束的整个数处于“16”到“ub”的范围内,"1b"的值小于或等于“u6”的值,且"1b”和“ub",的值是允许的值。注:受约束的整个数出现在编码中,它标识以下内容:选定的选择类型的替换项;长度已经被PER可视约束限制到最大长度的字符、八位位组和位串类型的长度;单一序列或单一集合类型中的成分数计数已经被PER可视约束限制为最大成分数的计数;已经被PER可视约束所约束的处于有限最小值和最大值范围内的整数类型值;以及表示枚举类型中的枚举值。3.6.8有效长度约束(受约束宇符串类型的)effectivesizeconstraint(foraconstrainedstringtype)单个有限长度约束,它可适用于内置串类型,并且其效果是允许且只允许全部能被受约束的串类型表示的那些长度。注1:例如,下列串类型有一个有效长度约束:www.17jzw.coA::=IA5String(SIZE(1..4)ISIZE(10..15))因为它可以用适用于所有值的单个长度约束改写:A:=IA5String(SIZE(1..4」10..15))而下面的串类型没有有效长度约束,因为如果该串不包含除+a,.,"b"和“c"外的任何字符,则它可以任意长:B::=IA5String(SIZE(1二4一FROMC"abc"))注2:有效长度约束只能用来确定长度的编码。3.6.9有效允许字母表约束(受约束的受限字符串类型的)effectivepermitted-alphabetconstraint(foraconstrainedrestrictedcharacterstringtype)单个允许字母表约束,它可以适用于内置已知倍数字符串类型,并且其效果是允许且只允许那些能够出现在某个受约束的受限字符串类型的值中至少一个字符位置上的字符。www.17bzw.c注1:例如,在Ax:;=IA5String(FROMC"AB")一FROMCCD"))Ix::=IA5String(SIZE(1..4!FROM("abc"))内Ax有一个有效允许字母表约束为“ABCD",Bx有一个由整个IA5String字母表构成的有效允许字母表约束,因为没有更小的允许字母表约束能够适用于Bx的所有值注2;有效允许字母表约束只用来确定字符的编码3.6.10枚举索引enumerationindex与枚举类型中的“EnumerationItem",相关联的非负整个数。枚举索引通过把“EnumerationItem",按照枚举值升序的方式进行排序来确定,枚举索引从。开始赋值,。赋值给第1个“EnumerationItem",1赋值给第2个,依此类推,直到排序表中的最后一个“EnumerationItem"owww.17jzw.ne注:"RootEnumeration",中的“EnumerationItem",与“AdditionalEnumeration",中的“EnumerationItem",分开来排序。www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:20023.6.11PER编码的可扩展extensibleforPERencoding一种类型特性,需要PER把值的编码标识为根值的编码或扩展附加部分的编码。注:根值编码一般比扩展附加部分编码的效率更高。3.6.12字段列表field-list位字段的有序集合,它是把这些编码规则应用于抽象值产生的结果3.6.13不定长度indefinite-length其长度大于64K-1或者其最大长度不能由ASN.1记法确定的一种编码。3.6.14固定长度类型fixed-lengthtype一种类型,该类型编码的最外层长度决定因子的值可以由类型记法(仅在应用PER可视约束之后)来确定(使用本部分规定的机制),并且对于该类型的所有可能值而言,该值相同。3.6.15固定值fixedvalue一个值,它可以确定(用本部分规定的机制)这是支配它的类型的一个唯一允许值(仅在应用PER可视约束之后)。3.6.16已知倍数字符串类型known-multipliercharacterstringtype一种受限字符串类型,其中,对所有允许字符串值,编码的八位位组数是字符串中的字符数的已知固定倍数。已知倍数字符串类型是IA5String,PrintableString,VisibleString,NumericString,Universal-String和BMPString,3.6.17长度决定因子lengthdeterminant确定全部或者部分PER编码长度的(位、八位位组、字符或成分的)计数。3.6.18正常小非负整个数normallysmallnon-negativewholenumber编码的一部分,它表示一个无边界非负整数的若干值,但是,小值比大值出现的可能性大。3.6.19正常小长度normallysmalllength长度编码,它表示一个无边界长度的若干值,但是,小长度比大长度出现的可能性大。3.6.20非负二进制整数编码non-negative-binary-integer-encoding受约束或半受约束的整个数的编码,该整个数可编码到指定长度的位字段中、或编码到指定长度的位字段(ALIGNED变体中的八位位组对齐)中、或者编码到最小数目的八位位组中,该八位位组将容纳非负二进制整数的整个数,而非负二进制整数为10.3规定的大于或等于。的整个数提供了表示。注:2的补码的二进制数的值通过计数内容八位位组中的位得出,计数从最后一个八位位组的位1开始作为位0,到第1个八位位组的位8结束。每位赋予一个2"的数值,这里N是该位在上面计数顺序中的位置。2的补码的二进制数的值为置1的位所赋予数值的和3.6.21最外层类型outermosttype-*hASN_1)WB.XW1A#G7,含存一个非ASN.1载体中或作为其他ASN.I结构(见10.1.1) GB/T16263.2-2006/ISO/IEC8825-212002的值。注:最外层类型的PER编码总是八位的整数倍3.6.22PER可视约束PER-visibleconstraint影响值的PER编码的ASN.1约束记法的使用实例。3.6.23中继安全编码relay-safeencoding抽象语法值的一种完整编码,该编码无需知道编码执行环境就可以被解码(包括任何嵌人式编码)3.6.24半受约束的整个数semi-constrainedwholenumber一种受PER可视约束所约束的整个数,以值“16"作为允许值,约束超过或等于某个值“lb",它是不受约束的整个数注;半受约束的整个数出现在不受约束的(和某些受约束的情况下的)字符、八位位组和位串类型的长度编码中,还出现在不受约束的(和某些受约束的情况下的)单一序列和单一集合类型的成分计数的编码中,以及已经约束为超过某个最小值的整数类型值的编码中.3.6.25简单类型simpletype不是复合类型的类型3.6.26文本依赖textuallydependentwww.17jzw.co用来标识下列情况的一个术语,如果在计算一个元素集合时使用了某个引用名,则该元素集合的值被认为依赖于该引用名,而无论执行的实际集合算术运算结果是元素集合的最终值与赋值给该引用名的实际元素集合值是否有关注:例如,下面的Foo的定义文本依赖于Bar,即使Bar对Fo。的值集没有影响(因此,根据9.3.5,在Foo上的约束不是PER可视的,因为Bar被一个表约束来约束的,而Foo在文本上依赖于Bar)MY-CLASS一CLASS{&namePrintableString,&ageINTEGER}WITHSYNTAX{&name,&age}MyObjertSetMY-CLASS::二{{"Jack",7}1{".)ill"15})Bar::=MYCLASS.&age({MyObjerSet})几。::=INTEGER(Bar{1..100)3.6.27不受约束的整个数unconstrainedwholenumberwww.17bzw.cn一种不受PER可视约束所约束的整个数注:不受约束的整个数仅出现在整数类型值的编码中。4缩略语下列缩略语适用于本部分:ASN.I抽象语法记法一BERASN.1的基本编码规则CERASN.1的正则编码规则DERASN.1的非典型编码规则PERASM1的紧缩编码规则16K16384www.17jzw.net32K3276849K49152www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:200264K655365记法本部分引用GB/T16262.1定义的记法6约定6.,本部分使用术语“最高有效位”和“最低有效位”来定义编码中的每个八位位组的值。注:低层规范使用相同的记法来定义串行线上位传输的次序,或者将若干位分配给并行信道。6.2对于本部分,八位位组的位从8至1编号,其中位8是“最高有效位”,位1是“最低有效位”。6.3在本部分中频繁使用的术语“八位位组”来代表“八个位”。使用该术语代替“八个位”不带有任何对齐的含义。若打算对齐,在本部分中被显式地说明.7本部分定义的编码规则7.1本部分规定了4种编码规则(以及相关联的客体标识符),它们可以用来编码和解码定义为单个(已知)ASN.1类型值的抽象语法值。本章描述其适用性和特性7.2在不知道被编码值的类型的情况下,就不可能确定编码(在任何PER编码规则算法下)的结构特别是,在不知道被编码的类型的情况下,就不能从编码本身确定编码的结束。7.3如果类型EXTERNAL,EMBEDDEDPDV和CHARACTERSTRING的抽象值被约束阻止携带OSI表示上下文的标识符,则PER编码总是中继安全的。7.4本部分规定的最一般的编码规则算法是BASIC-PER,它通常不产生正则编码。7.5本部分规定的第2个编码规则算法是CANONICAL-PER,它产生正则编码。被定义为在BAS-IC-PER编码中依赖于实现的选择的限制注1:当鉴别器需要应用于抽象值时,则CANONICALPER产生具有若干应用的正则编码注2:任何与CANONICAL-PER编码一致的实现都与BASIC-PER编码一致.任何与BASIC-PER解码一致的实现都与CANONICAL-PER解码一致。因此按照CANONICAL-PER形成的编码也是BASIC-PER所允许的编码。7.6如果用BASIC-PER或CANONICAL-PER所编码的类型含有EMBEDDEDPDV,CHARACTERSTRING或者EXTERNAL类型,则外层编码不再是中继安全的,除非所有EMBEDDEDPDV,CHAR-ACTERSTRING和EXTERNAL类型所使用的传送语法都是中继安全的。如果用CANONICAL-PER所编码的类型含有EMBEDDEDPDV,CHARACTERSTRING或EXTERNAL类型,则外层编码不再是正则的,除非所有EMBEDDEDPDV,CHARACTERSTRING和EXTERNAL类型所使用的传送语法都是正则的。注:支持{GB13000.1的1级(1)二}形式的所有字符抽象语法的字符传送语法是正则的支持{GB13000.1的2级(2)...}和{GB13000.1的3级(3)...}形式的字符传送语法不总是正则的所有上述字符传送语法都是中继安全的。7.7BASIC-PER和CANONICAL-PER各有两个变体:ALIGNED变体和UNALIGNED变体。在ALIGNED变体中,常常插人填充位来恢复八位位组对齐。在UNALIGNED变体中,则从不插人填充位。7.8在ALIGNED变体和UNALIGNED变体之间没有互工作的可能性。7.9只有知道编码值的类型时,PER编码才是自定界的。编码总是八位的整数倍。当在EXTERNAL类型中携带这些位时,应在OCTETSTRING选择项中携带它们,除非EXTERNAL类型本身用PER进行编码,在这种情况下,该值可以编码为单个ASN.1类型(即,开放类型)。当在OSI表示协议中携带它们时,应使用带有OCTETSTR工NG选择项的“全编码“(如GB/T15696.1定义)7.10除非另有说明,本部分的规则适用于两种算法和两种变体。 GB/T16263.2-2006/ISO/IEC8825-2:20027.11附录C是资料性附录,它就实现PER的组合给出了建议,以使互工作的机会最大化。8一致性8.1动态一致性在第9章中规定8.2静态一致性由规定这些紧缩编码规则的应用的那些标准来规定注:附录C提供了与支持两种编码规则算法的两种变体有关的静态一致性的指南。该指南被设计成能保证互工作,同时认可既不是中继安全、也不是正则的某些编码应用的好处。8.3本部分中的规则以编码过程形式规定。如果生成的抽象语法值完整编码的位串与本部分为适用传送语法规定的那些位串之一相同,则不要求实现与规定的过程完全镜像。8.4执行解码的实现要产生与收到的位串相一致的抽象语法值,收到的位串由发送器产生,这些发送器符合与被解码资料相关联的传送语法中所标识的编码规则。注1:通常,本部分显式说明的BASIC-PER,没有定义替换的编码。通过规定中继安全操作和限制引用其他标准的某些编码选项,使BASIC-PER成为正则的。CANONICAL-PER为要求正则和中继安全编码的非典型编码规则和正则编码规则(见GB/T16263.1-2006)提供了一种替换的编码规则.注2:当使用CANONICAL-PER来提供正则编码时,建议宜将从其派生出的任意所产生的加密散列值与一个算法标识符相关联,该算法标识符将CANONICAL-PER标识为从抽象语法值到初始位串(然后被散列)的转换。9PER使用的编码方法9.1类型记法的使用9.1.1这些编码规则专门使用GB/T16262.1-2006中规定的ASN.1类型记法,并且只能适用于将www.17jzw.co使用该记法规定的单个ASN.1类型的值编码。9.1.2特别是,但不仅仅是,它们依赖于以使用该记法为基础的ASN.1类型和值模型中所保持的下列信息:a)选择类型中的选择类型的嵌套;b)放置在集合类型中的成分上的标签、放置在选择类型中的选项上的标签及枚举项的给定值;c)集合或者序列类型的成分是否可选;d)集合或者序列类型的成分是否有DEFAULT值;e)(只)通过PER可视约束的应用出现的类型值的受限范围;f)成分是否是开放类型;9)类型对PER编码是否可扩展。9.2使用标签以提供正则次序www.17bzw.c本部分要求被正则排序的集合类型和选择类型的成分独立于成分的正文排序。如GB/T16262.1-2006中的8.6规定的那样,正则排序通过排序每个成分的最外层标签来确定。9.3PER可视约束注:对于解码和编码,某些ASN.1约束可能不是PER可视的,但不会以任何方式影响使用这些约束处理解码期间检测到的差错,也不意味着允许违反这些约束的值被遵守规则的发送器所发送。然而,本部分并不在编码规范中使用这样的约束。9.3.1用人类可读文本表达的或在ASN.1注释中所表示的约束不是PER可视的。9.3.2可变的约束不是PER可视的(见GB/T16262.4-2006中的10.3和10.4)09.3.3表约束不是PER可视的(见GB/T16262.3-2006).9.3.4成分关系约束(见GB/T16262.3-2006中的10.7)不是PER可视的。9.3.5计算过程文本依赖于表约束或成分关系约束的约束不是PER可视的(见GB/T16262.3-2006)0www.17jzw.ne9.3.6对不是(见GB/T16262.1-2006中的第37章)已知倍数字符串类型的受限字符串类型的约束7www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002不是PER可视的(见3.6.16).9.3.7模式约束不是PER可视的9.3.8受上述各条制约的所有长度约束都是PER可视的。9.3.9约束类型的有效长度约束是单个长度约束,因此,当且仅当存在该(允许的)长度的某个约束类型值时,该长度才是允许的。9.3.10在应用GB/T16262.1-2006中的48.3到48.5之后,对不可扩展的已知倍数字符串类型的允许字母表约束是PER可视的。可扩展的允许字母表约束不是PER可视的。9.3.11当且仅当包含某个字符的受约束类型的某个值,该受约束类型的有效允许字母表约束是允许该字符的单个允许字母表约束。如果受约束类型的所有字符都可以出现在该受约束类型的某个值中,则该有效允许字母表约束是为不受约束的类型而定义的字符集。9.3.12应用于实数类型的约束不是PER可视的。9.3.13仅当用来限制syntaxes成分的值为单个值时,或者用来限制identification为替换的fixed标识(见第25章和第28章)时,应用于不受限字符串或者嵌入式pdv类型的内部类型约束才是PER可视的9.3.14对有用类型上的约束不是PER可视的。9.3.15应用于字符串类型的单个值子类型约束不是PER可视的9.3.16当且仅当所有其他约束适用于整数类型或已知倍数字符串类型时,受上述各条制约的这些约束是PER可视的9.3.17通常,对类型的约束可由各个约束组合而成,组合时使用了某些或全部包含子类型约束和一系列应用约束的集合算法注:有关组合分别为PER可视或PER不可视约束的效果的进一步讨论参见附录B,9.3.18如果约束由约束的一系列应用组成,那么,即使不是PER可视的约束,也不影响PER编码,但能引起可扩展性(和扩展附加部分)出现在任何按GB/T16262.1-2006中的46.8规定的要被取消的早期约束中。注1:如果在系列应用中的最后约束不是PER可视的,那么,类型对PER编码不是可扩展的,并且编码无扩展位.注2:例如,因为可扩展的允许字母表约束不是PER可视的,那么,A::=IA5String(SIZE(1二4))(FROMC"ABCD",...))就有一个由整个IA5String字母组成的有效允许字母表约束。不过,它的有效大小约束为“SIZE(1..4)""e类似地,B::=IA5String(A)有同样的有效大小约束和同样的有效允许字母表约束9.3.19如果一个PER可视约束是INTERSECTION结构的一部分,那么,得到的约束是PER可视的,并由所有PER可视部分(非PER可视部分被忽略不计)的INTERSECTION组成。如果一个不是PER可视的约束是UNION结构的一部分,那么得出的约束也不是可视的如果一个约束有EXCEPT条款,那么,EXCEPT及随后的值集全部忽略不计,而不管跟在EXCEPT之后的值集是否是PER可视的。注:例如:A::=IA5String(SIZE(1二4)INTERSECTIONFROM("ABCD",...))有1..4的有效长度约束,但字母表约束不是可视的,因为它是可扩展的。9.3.20如果下列情况之一出现,则对于PER编码,类型也是可扩展的:a)它是从一个ENUMERATED类型派生的(通过划分子类型、指出类型引用或者置标签),而且在“Enumerations”产生式中有扩展标记;或者b)它是从一个SEQUENCE类型派生的(通过划分子类型、指出类型引用或者置标签),而且在"ComponentTypeLists",或“SequenceType",产生式中有扩展标记;或者c)它是从一个SET类型派生的(通过划分子类型、指出类型引用或者置标签),而且在“Compo- GB/T16263.2-2006/ISO/IEC8825-2:2002nentTypeLists"或“SetType",产生式中有扩展标记;或者d)它是从一个CHOICE类型派生的(通过划分子类型、指出类型引用或者置标签),而且在“Al-ternativeTypeLists",产生式中有扩展标记。9.4编码使用的类型和值模型9.4.1ASN.1类型或是简单类型或是用其他类型构造的类型。记法允许使用类型引用和类型置标签。对于这些编码规则,使用类型引用和类型置标签对编码没有影响,而且在模型中这些是不可视的,除非在9.2中说明。记法也允许应用约束和差错规范。PER可视约束在模型中作为类型值的限制出现其他约束和差错规范不影响编码,并且在PER类型和值模型中是不可视的。9.4.2被编码的值可以被视为一个简单值或者一个用结构化机制从简单或复合值的成分构建的复合值,与ASN.1类型定义的结构并行。9.4.3当约束包括一个在根中出现的扩展附加部分的值时,该值总是编码为根的值,而不是扩展附加部分的值。示例:INTEGER(0..10,⋯,5)一值5被编码为根值,而不是一个扩展附加部分的值。9.5编码的结构9.5.1这些编码规则规定:a)简单值到字段列表的编码;并且b)复合值到字段列表的编码,使用了由这些编码规则应用到复合值的成分而产生的字段列表;并且www.17jzw.coc)最外层值的字段列表到抽象语法值的完整编码的变换(见10.1)前导码长度}前导码一长度}内“}}前导码}长度}内容}.二注:前导码、长度及内容都是“字段”,它们被拼接在一起形成“字段列表”。除选择类型外,复合类型的字段列表可以由几个值拼接在一起的字段构成。任一前导码、长度和/或任意值的内容都可能没有。图1复合值到字段列表的编码5.2数据值成分的编码:a)由3部分构成,如图1所示,它们以下列次序出现:1)前导码(见第18,20和22章);2)长度决定因子(见10.9);www.17bzw.c3)内容。或者b)(若内容很长)由任意个部分构成,如图2所示,其中第1部分是前导码(见第18,20和22章),随后的各部分是多对位字段(在ALIGNED变体中八位位组对齐),首先是内容段的长度决定因子,其次是各内容段;各字段的最后一对由长度决定因子部分来标识,如10.9规定。内容前导码一长度!内容{长度一内容长度(可能没有)图2长数据值的编码9.5.3在9.5.2中提到的每一部分生成:a)一个空字段(无内容);或者切一个位字段(未对齐);或者c)一个位字段(ALIGNED变体中八位位组对齐);或者d)www.17jzw.ne一个字段列表,它可以包含位字段(未对齐)、位字段(ALIGNED变体中八位位组对齐)、或者www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002两者都有。9.6被编码的类型9.6.1下列各章规定将以下类型编码到字段列表中:布尔、整数、枚举、实数、位串、八位位组串、空、序列、单一序列、集合、单一集合、选择、开放、客体标识符、相关客体标识符、嵌人式pdv、外部、受限字符串和不受限字符串的类型。9.6.2选择的类型应编码为所选类型的编码。9.6.3除9.2说明外,有标签的类型的编码不包括在本部分中,因为在这些编码规则所使用的类型和值模型中置标签是不可视的。因此,有标签的类型根据已有标签的类型的编码来编码。9.6.4下列“有用的类型”应进行的编码就好像它们已被GB/T16262.1-2006的第41章中给出的定义所取代那样进行编码:—通用时间;世界协调时;客体描述符。对有用类型的约束不是PER可视的。在这里应用通过GB/T16263.1-2006的11.7和11.8对通用时间和世界协调时的编码所施加的限制。9.6.5用值集赋值所定义的类型应进行的编码就好像该类型使用了GB/T16263.1-2006的15.8中规定的产生式已经定义的那样进行编码。10编码过程10.1完整编码的产生式10.1.1如果ASN.1类型使用在29.2中(或通过本部分的直接文本引用)列出的客体标识符所标识的任何编码规则进行编码,并且编码被包括在:a)ASN.1位串或ASN.1八位位组串(带有或不带有内容约束)中;或者b)ASN.1开放类型中;或者c)ASN.1外部或嵌人式pdv类型的任何部分中;或者d)任何不使用ASN.1定义的载体协议中;那么,该ASN.1类型被定义为这种应用的最外层类型,10.1.2应适用于其值的所有编码注1:这意味着使用此方法的所有完整的PER编码(对所有变体)总是八位的整数倍注2:使用编码控制记法(见ISO/IEC8825-3)来规定PER编码的变体是可能的,该编码不被填充到10.1.2中规定的八位位组边界。许多工具支持这一选项。注3:一般公认为不使用ASN.1定义的载体协议不需为填充(在10.1.2中规定)而显式地运载附加。位,但可以隐含。位的存在。10.1.2作为对最外层类型抽象值应用本部分的结果而产生的字段列表应被用来如下产生这个抽象语法值的完整编码:应依序取出字段列表中的每个字段,拼接到位串的末端,该位串形成抽象语法值的完整编码,该抽象语法值的完整编码前面是如下面规定的填充的附加0位。10.1.3这些编码规则的UNA工-IGNED变体中,所有字段应进行拼接,而无需填充。如果最外层值编码的结果是空位串,则该位串应该用所有位置为。的单个八位位组来代替。如果是非空位串,且不是八位的倍数,则应在空位串后面附加(0到7个)0位以产生8位的倍数。10.1.4这些编码规则的ALIGNED变体中,字段列表中的任意位字段应进行拼接,而无需填充。在已拼接(0到7个)0位使目前产生的编码长度是8位的整数倍之后,任意八位位组对齐位字段应被拼接。如果最外层值编码的结果是空位串,则用一个所有位置为。的八位位组代替该位串。如果是个非空位串,且不是8位的整数倍,则应在其后面附加(0到7个)0位产生8位的整数倍。注:如果抽象语法值是空类型值或者被约束为单个值的整数型,则最外层值的编码是个空位申。10 GB/T16263.2-2006/ISO/IEC8825-2:200210.1.5所产生的位串是最外层类型的抽象语法值的完整编码。10.2开放类型字段10.2.1为了编码开放类型字段,占用该字段的实际类型的值应编码到一个字段列表中,然后,该字段列表应被转换成如10.1规定的抽象语法值的完整编码,用以产生长度为n的八位位组串。10.2.2要嵌人的开放类型的值的字段列表应被添加上(如10.9规定)不受约束的长度n(以八位位组为单位)和含有10.2.1中产生位的关联位字段(ALIGNED变体中八位位组对齐)。注:当开放类型编码中八位位组的数目很大时,应使用10.9中的分片过程,开放类型编码将是断开的,而与占用开放类型字段的类型编码中分片边界的位置无关。10.3非负二进制整数的编码注:(说明性)本条给出术语“非负二进制整数编码”的精确描述,以便把该整数放到固定位数目的字段中,或放到固定数目的八位位组的字段中,或者放到容纳该整数所需的最少数目八位位组的字段中。10.3.1随后诸条涉及进人某一字段的非负整(个)数的非负二进制整数编码的生成,而该字段是规定长度为单个八位位组、两个八位位组的位字段或者是表示该值的最少数目八位位组的位字段。本条(10.3)规定进行引用时所使用的精确编码。10.3.2该字段的引导位定义为位字段的引导位,或者是该字段第1个八位位组的最高有效位,该字段的末尾位定义为位字段的末尾位,或者是该字段最后1个八位位组的最低有效位10.3.3只对以下定义,这些位应加以编号,该字段的末尾位应被编号为。,下一位编号为1,依此类推,直到该字段的引导位。10.3.4在非负二进制整数编码中,编码所表示的整个数的值应是每位所指定值之和。置为“0”的位的指定值为。。编号为“n’的位,若置为“1",则该位的指定值为2"pwww.17jzw.co10.3.5对被编码值的求和(按上述定义)的编码即是对该值的编码。注:如果被编码字段长度为固定(指定长度的单个八位位组或两个八位位组的位字段)的,则存在唯一的编码,它是被编码的值的和。10.3.6整个数(它不能预先确定用于编码的八位位组的数目)的最少数目八位位组的非负二进制整数编码具有八位的整数倍的某一字段,并且该字段应满足如下条件,除非该字段是准确的八位长,否则该字段的引导段八位应不全是。。注:这是产生唯一编码的充分必要条件。10.42的补码二进制整数的编码注:(说明性)本条给出术语“2的补码二进制整数编码”的精确描述,以便把有符号的整数放到为容纳该有符号整数所需的最少数目的八位位组中。这些过程在后面的编码规范中引用。10.4.1随后诸条涉及整个数(可能是负数、。或正数)被编码到表示其值的最少数目八位位组的2的www.17bzw.c补码二进制整数的编码的生成。本条(10.4)规定进行这种引用时所使用的精确编码。10.4.2该字段的引导位定义为第1个八位位组的最高有效位,末尾位定义为最后1个八位位组的最低有效位10.4.3只对以下定义,这些位应加以编号,该字段的末尾位应被编号为0,下一位编号为1,依此类推,直到该字段的引导位。10.4.4在2的补码的二进制整数编码中,编码所表示的整个数的值应是每位所指定值之和。置为“。”的位的指定值为。除引导位外,编号为“n’的位,若置为“1",则该位的指定值为2-,如果引导位为I,则该位的指定值为(负数)-2-10.4.5对被编码值的求和(按上述定义)的任何编码均为对该值的编码10.4.6整个数的最少数目八位位组2的补码二进制整数编码具有八位的整数倍的字段宽度,并且应满足如下条件:该字段的引导的9个位应不全是。也应不全是towww.17jzw.ne注:这是产生唯一编码的充分必要条件。IIwww.3x888.co GB/T16263.2-2006/ISO/IEC8825-2;200210.5受约束的整个数的编码注:(说明性)本条被其他条引用,其本身也引用前面诸条,以便产生非负二进制整数编码或2的补码二进制整数编码。对于UNALIGNED变体,该值总是编码在表示该范围(在10.5.3中定义)所需的最少数目位中。本注的其余部分针对ALIGNED变体。当范围小于或等于255时,该值被编码到表示该范围的最小长度的位字段中。当范围正好是256时,该值被编码到单个八位位组对齐的位字段中。当范围在257到64K之间时,该值被编码到两个八位位组对齐位字段中。当范围大于64K时,则忽略范围,并且该值被编码到八位位组对齐位字段中,该位字段是表示该值的最少数目八位位组。在最后一种情况下,后面的过程(见10.9)将编码一个长度字段(通常是单个八位位组),以指示编码的长度.对其他情况,编码的长度与被编码的值无关,不被显式编码.10.5.1本条(10.5)规定从受约束的整个数到位字段(不对齐的)或者位字段(在ALIGNED变体中的八位位组对齐)的映射,它被本部分中的后续条款引用。10.5.2仅当受约束的被编码的整个数是可用的,并且下边界“lb"和上边界“ub”的值已从类型记法中确定下来(在应用PER可视约束之后),本条的过程才能被引用。注:如果对一个无限数求M工N值,则不能确定下边界,如果对一个无限数求MAX值,则不能确定上边界。例如对工NTEGER(MIN..MAX),则上边界和下边界都不能确定10.5.3设“范围”定义为整数值("ub”一“Ib"+1),且设被编码的值为“n"o10.5.4如果“范围”值为1,则编码结果应是一个空的位字段(没有任何位)。10.5.5有5种其他情况(导致不同的编码)要考虑,一种适用于UNALIGNED变体,其他4种适用于ALIGNED变体。10.5.6在UNALIGNED变体的情况下,值("n”一“lb")应编码为在10.3规定的位字段中的非负二进制整数,并具有为表示该范围所需的最少数目位数。注:如果“范围”满足不等式2.1"范围”<2-,则位数为.+I.10.5.7在ALIGNED变体的情况下,编码依赖于是否:a)“范围”小于或等于255(位字段的情况);b)“范围”刚好等于256(一个八位位组的情况);c)“范围”大于256且小于或等于64K(两个八位位组的情况);d)“范围”大于64K(不定长度的情况)。10.5.7.1(位字段的情况)如果“范围”值小于或等于255,则本条的引用要求生成下表所规定的位数的位字段,并包含在10.3规定的位字段中作为非负二进制整数编码的值(.}n;一“lb"),“范围”位字段长度(按位计)213,45,6,7,89^-1617--32336465-v12812925510.5.7.2(一个八位位组的情况。)如果“范围’,值为256,则值(“n’,一“lb")应被编码为10.3规定的非负二进制整数,放在一个八位位组位字段中(ALIGNED变体中的八位位组对齐)。10.5.7.3(两个八位位组的情况。)如果“范围”值大于或等于257并且小于或等于64K,则值编码为10.3规定的非负二进制整数(+n.}一“lb")放在两个八位位组位字段(ALIGNED变体中的八位位组对齐)中。12 GB/T16263.2-2006/ISO/IEC8825-2:200210.5.7.4(不定长度的情况。)否则,值(“n’一“lb")应按10.3的规定编码为非负二进制整数,放在表示该值的最少数目八位位组的位字段(ALIGNED变体中的八位位组对齐)中,并且该编码中使用的八位位组的数目“ten"被引用本条的其他条用来规定长度的编码。10.6正常小非负整个数的编码注:(说明性)当编码期望为小非负整个数,但其长度由于存在扩展标记而引起潜在地不受限制时,可使用本过程选择索引是一个示例。10.6.1如果非负整个数“n’小于或等于63,则一个单个位的位字段应被附加到字段列表后,该位置为。,并且“n"应编码为非负二进制整个数,放入一个6位的位字段中。10.6.2如果“n’大于或等于64,则一个置为1的单个位的位字段应被附加到字段列表后。然后,值“n’应编码为半受约束的且“lb"等于。的整个数,并应引用10.9的过程将它附加到字段列表中,该字段列表前面是长度决定因子10.7半受约束的整个数的编码注:(说明性)当在能够标识出下边界但不能标识上边界时,可适用本过程。编码过程将与下边界的偏移值作为非负二进制整数放人最少数目的八位位组,并且要求一个按后面过程规定的显式长度编码(典型地是单个八位位组)。10.7.1本条规定从半受约束的整个数到位字段(ALIGNED变体中的八位位组对齐)的映射,并且它将被本部分的后续条款所引用10.7.2仅当被编码的半受约束的整个数可用,并且下边界“16"的值已经从类型记法中确定(在应用PER可视约束之后)时,本条(10.7)的过程才能被引用。注:如果对一个无限数求MIN值,则不能确定下边界。例如,对INTEGER(MIN..MAX)不能确定任何下边界www.17jzw.co10.7.3本条(10.7)的过程总是产生不定长度的情况。10.7.4(不定长度的情况)值(+n;一“lb")应按10.3的规定编码为非负二进制整数,放在表示该值的最少数目八位位组的位字段(ALIGNED变体中的八位位组对齐)中,并且该编码中使用的八位位组的数目“ten”被引用本条的其他条用来规定长度的编码。10.8不受约束的整个数的编码注:(说明性)这种情况只在没有下边界的整数型值的编码中出现。本过程将该值编码为2的补码二进制整数,并放人容纳该编码所需的最少数目八位位组中,并且要求有一个按后面过程规定的显式长度编码(典型的是单个j位位组)。10.8.1本条(10.8)规定从不受约束的整个数(如“n’,)到位字段(ALIGNED变体中的八位位组对齐)的映射,它被本部分的后续条款引用。10.8.2本条(10.8)的过程总是产生不定长度的情况。10.8.3(不定长度的情况。)值“n)’应按10.4的规定编码为2的补码二进制整数,放在表示该值的最少www.17bzw.c数目八位位组的位字段(ALIGNED变体中的八位位组对齐)中,并且该编码中使用的八位位组的数目"ten"被引用本条的其他条用来规定长度的编码。10.9长度决定因子的编码的一般规则注1:(说明性)本条的过程只在编码的某些部分需要一个显式的长度字段时被引用,无论长度计数是否有上边界(通过PER可视约束)。使用长度的编码部分可能是位串(带有以位表示的长度计数)、八位位组串(带有以八位位组表示的长度计数)、已知倍数字符串(带有以字符表示的长度计数)、或者字段列表(带有以单一序列或单一集合的成分表示的长度计数)注2:(说明性)在ALIGNED变体的情况下,如果长度计数被小于64K的上边界所界定,则长度使用受约束的整个数编码。对于足够小的范围,其结果是一个位字段,否则,不受约束的长度(如“n’)以下列三种方式之一编码到八位位组对齐字段中(依长度递增的次序):a)("n小于128)含有“n’的位8置为。的单个八位位组;b)("n"小于16K)含有“n’的两个八位位组,第1个八位位组的位8置为1,位7置为。;www.17jzw.nec)(大“n,’)含有计数“m”的单个八位位组,位8置为1,位7也置为1。计数“m”为1^4,该长度表示其后面13www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002有一个资料分片(16K项的“m”倍)。对于所有“m”值,该分片后面跟有另一个表示资料余下部分的长度编码注3:(说明性)在UNALIGNED变体中,如果长度计数被小于64K的上边界所界定,则受约束的整个数编码用来编码表示该范围所需的最少数目位的长度。否则不受约束的长度(如“n")按上述注2的方式编码到位字段中10.9.1按照后面各条的规范,如果长度决定因子“n”的值被类型定义(被PER可视约束所约束)固定为小于64K的值,则不能引用本条。10.9.2本条被引用来向字段列表附加字段或者字段列表,其前面是一个长度决定因子“n",长度决定因子决定:a)以关联字段的八位位组表示的长度(单位为八位位组);或者b)以关联字段的位表示的长度(单位为位);或者C)以关联的字段列表表示的成分编码的数目(单位为单一集合或单一序列的成分);或者d)以关联的已知倍数字符串类型的值表示的字符数(单位为字符)。10.9.3(ALIGNED变体)ALIGNED变体用的过程在10.9.3.1到10.9.3.8.4中规定(UNALIGNED变体用的过程在10.9.4中规定)。10.9.3.1作为类型定义(在后面的条中规定)的分析结果,长度决定因子(一个整个数“n")将被确定为:a)一个正常小长度,其下边界,"lb”等于1;或者b)一个受约束的整个数,具有(大于或等于0)的下边界,"1b",上边界“ub"小于64K;或者C)一个半受约束的整个数,具有(大于或等于0)的下边界“lb",或者一个受约束的整个数,具有(大于或等于0)的下边界,"16",大于或等于64K的上边界“ub"10.9.3.2引用本条(0.9)过程的各条将确定长度的下边界“lb"的值(如果长度是不受约束的,则它为0)和长度的上边界“ub”的值。如果从PER可视约束不能确定上边界,则“ub”为不设置10.9.3.3当长度决定因子是一个“ub"小于64K的受约束的整个数时,则按10.5中规定的长度决定因子的受约束整个数的编码应被附加到字段列表上。如果“n’,为非。,则其后应有关联字段或字段列表,过程结束。如果“n’为。,则对字段列表不应进一步附加,过程结束。注1:例如:A;;=IA5String(SIZE(3..6))长度以2位的位字段编码B::=IA5String(SIZE(40000..40254))长度以8位的位字段编码C;;=IA5String(SIZE(0..32000))长度以两个八位位组(ALIGNED变体中的八位位组对齐)的位字段编码D;:=IA5String(SIZE(64000))一长度不予编码注2:当这些过程被引用来添加。长度的八位位组对齐位字段时,在“n’等于。的情况下,不进行添加的影响是指对八位位组边界的填充并不出现,除非被10.5要求。10.9.3.4当长度决定因子是一个正常小长度,并且“n’小于或等于64,则一个单个位的位字段将被附加到字段列表上,且该位被置为0,值“n-1”应被编码为非负二进制整数放人一个6位的位字段中。其后是关联的字段,于是这些过程结束。按照10.9.3.5到10.9.3.8.4中的过程,如果“n”大于64,则一个单个位的位字段应被附加到字段列表上,且该位置为1,其后是不受约束长度决定因子n的编码,再后是关联的字段。注:正常小长度只用来指示位图的长度,该位图表示集合或序列类型的扩展附加部分值的前缀。10.9.3.5否则(不受约束的长度,或大“ub"),"n"被编码并添加到字段列表上,其后是下面规定的关联字段。注:下边界“16”不影响10.9.3.6到10.9.3.8.4中规定的长度编码10.9.3.6如果“n”小于或等于127,则“n”应作为非负二进制整数(使用10.3的过程)被编码到一个单14 GB/T16263.2-2006/ISO/IEC8825-2:2002个八位位组位7(最高有效位)至位1(最低有效位)中,且位8应置为0。它应作为位字段(在ALIGNED变体中的八位位组对齐)附加到字段列表后,其后是关联的字段或字段列表,过程结束。注:例如,如果下列“A",的值为4个字符长,并且“B",的值为4个项长:A::=IA5StringB::=SEQUENCE(SIZE(4..123456))OFINTEGER则这两个值都在占用一个八位位组的长度八位位组中编码,且最高有效位置为0,以表明长度小于或等于127:00001004个字符/项长度10.9.3.7如果“n"大于127且小于16K,则“n’应(使用10.3的过程)编码为非负二进制整数放入两个八位位组位字段(在ALIGNED变体中的八位位组对齐)中的第1个八位位组(最高有效)的位6到第2个八位位组(最低有效)的位1中,同时第1个八位位组的位8置为1,第1个八位位组的位7置为。它应被附加到字段列表后,其后是关联字段或字段列表,过程结束。注:如果在10.9.3.6示例中A的值为13。个字符,B的值为13。项,则这两个值在占用2个八位位组的长度成分和该八位位组的2个最高有效位(位8和位7)均置为10的情况下进行编码,以指长度大于127小于16K1000000010000010{130个字符/项长度值www.17jzw.co10.9.3.8如果“n"大于或者等于16K,则在位字段(在ALIGNED变体中的八位位组对齐)中的单个八位位组应被附加到字段列表上,该单个八位位组的位8置为1,位7置为1,并且位6到位1是值1,2,3或4,作为非负二进制整数(使用10.8的过程)编码。该单个八位位组后应是下面规定的部分关联字段或字段列表。注:位6到位1的值限制为1--4(而不是理论值。-63),是为了把实现必须了解的项数限制到更易于管理的数目(64K而不是1024K)上。10.9.3.8.1位6到位1的值(1到4)应乘以16K来给出计数(记“m")。位6到位1中的整数的选择应是最大可允许的值,这样,相关联的字段或字段列表含有多于或正好等于合适的“m”个八位位组、位、成分或字符。注1:不分片形式处理的长度达16K,因此分片可以提供高达64K的长度,粒度为16K,注2:如果在10.9.3.6的示例中,B的值长度为144K+1(即64K+64K+16K+1)项长,则该值被分片,前三个分片的两个最高有效位(位8和位7)置为11,表明后面的1到4个块,每块16K项,另一个长度成分跟在每个分片www.17bzw.c的最后一块之后颇11000100}64K项一11000100}64K项111000001一16K项一00000001-值长度值长度值长度长度10.9.3.8.2"m”指定的内容部分应被附加到字段列表上,作为“m”个八位位组的单个位字段(在ALIGNED变体中的八位位组对齐)含有关联字段的前“m”个八位位组,单位为八位位组;或者“m”位的单个位字段(在ALIGNED变体中的八位位组对齐)含有关联字段的前“m”位,单位为位;或者字段列表编码关联字段列表中的前“m”个成分,单位为单一集合类型或单一序列类型的成分;或者www.17jzw.ne“m”个字符的单个位字段(在A工,IGNED变体中的八位位组对齐)含有关联字段的前“m”个字75www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002符,单位为字符。10.9.3.8.3应重新应用10.9的过程将关联字段或字段列表的其余部分附加到带有长度的字段列表上,该长度是等于("n”一“m")的半受约束整个数,下边界为。注:如果含有部分编码值的最后一个分片的长度正好是16K的整数倍,则其后的最末一个分片只由单个八位位组的长度成分构成,该长度成分置为0.10.9.3.8.4重复应用这些过程,只将关联字段的一部分添加到字段列表上称为分片过程。10.9.4(UNALIGNED变体)UNALIGNED变体用的过程在10.9.4.1到10.9.4.2中规定(AL工GNED变体用的过程在10.9.3中规定)。10.9.4.1如果要编码的长度决定因子“n"是“ub”小于64K的受约束的整个数,则应使用编码“范围”("u6",一“lb"+1)所需的最少数目位数将("n”一“lb")编码为非负二进制整数(在10.3中规定),除非范围是1,在这种情况下,不应有长度编码。如果“n"为非0,则其后是关联字段或字段列表,过程结束。如果“n"是。,则不再向该字段列表添加字段表,过程结束注:如果“范围”满足不等式2-1"范围”夏2-,则长度决定因子中的位数为,+110.9.4.2如果被编码的长度决定因子“n"是一个正常小长度、或是一个大于或等于64K的受约束整个数、或是一个半受约束整个数,则“n"应按照10.9,3.4到10.9.3.8.4中的规定进行编码。注:因此,如果“ub"大于或等于64K,长度决定因子编码与长度不受约束时相同11布尔类型的编码11.1布尔类型的值应编码为由单个位构成的位字段11.2该位置1为真(TRUE)时,置0为假(FALSE)11.3位字段应被添加到不带长度决定因子的字段列表上12整数类型的编码注1:(ALIGNED变体说明性)所允许的全部值编码到一个或更少的八位位组的范围,放人一个没有长度计数的最小长度的位字段。所允许的全部值编码到两个八位位组的范围,放人一个没有长度计数的八位位组对齐的位字段中的两个八位位组。否则,该值被编码到最少数目的八位位组〔当合适时使用非负二进制整数或2的补码二进制整数编码)中并添加上长度决定因子。在这种情况下,如果整数值可以被编码在小于127个八位位组(作为可能确定的任何下边界的偏移)中,并且没有有限上边界和下边界,则存在一个八位位组的长度决定因子,否则,该长度被编码在所需的最少位数中。其他情况没有实际意义,但为了完整性也进行了规定注2;(UNALIGNED变体说明性)受约束的整数被编码在为表示与其范围所需的最小位数中,无论它的长度是多少。不受约束的整数的编码按注112.1如果在整数类型的约束规范中出现扩展标记,则单个位应作为长度为1的位字段添加到字段列表上。如果被编码的值不在扩展根的范围内,则该位应置为1,否则置为0对前一种情况,该值应按12.2.4到12.2.6的规定,作为不受约束的整数值添加到字段列表中,过程结束对后一种情况,该值应该按照不存在扩展标记的情况进行编码12.2如果整数类型的约束规范中不存在扩展标记,则使用下列条款。12.2.1如果PER可视约束将整数值限制为单个值,则应不向字段列表添加任何内容,过程结束。12.2.2如果PER可视约束将整数值限制为受约束的整个数,则应按照10.5受约束的整个数的编码)的过程将其转换成某个字段,然后应使用12.2.5到12.2.6的过程。12.2.3如果PER可视约束将整数值限制为半受约束的整个数,则应按照10.7半受约束的整个数的编码)的过程将其转换成某个字段,然后应使用12.2.6的过程12.2.4如果PER可视约束不将整数值限制为受约束的整个数或者半受约束的整个数,则按照10.8(不受约束的整个数的编码)的过程将其转换成某个字段,然后应使用12.2.6的过程。12.2.5如果引用将整数值编码到某个字段的过程不产生不定长度的情况(见10.5.7.4和10.8.2),16 GB/T16263.2-2006/ISO/IEC8825-2:2002则该字段应被添加到字段列表上,过程结束。12.2.6否则,(不定长度情况)应引用10.9的过程把该字段附加到其前面是下列内容之一的字段列表上:a)受约束的长度决定因子等于“ten"(按10.5.7.4所确定的),如果PER可视约束限制了带有有限上下边界的类型,并且如果该类型是可扩展的,则该值位于扩展根范围内。长度决定因子使用的下边界,"1b"应是1,上边界“ub”应是容纳该整数值范围所需的八位位组数的计数注:因此,值“fooINTEGER(256..1234567)::二256",的编码被编码为OOxxxxxx00000000,其中‘x’表示一个。填充位,它可能存在也可能不存在,这取决于长度在八位位组中出现的位置(例如,如果长度开始于一个八位位组的边界,则编码是00xxxxxx00000000,如果长度开始干一个八位位组的两个最低有效位(位2和位1),则编码是0000000000)b)不受约束的长度决定因子等于“len"(按10.7和10.8所确定的),如果PER可视约束不限制具有有限上下边界的类型,或者如果该类型是可扩展的,并且该值不在扩展根的范围内。13枚举类型的编码注(说明性)没有扩展标记的枚举类型的编码就好像它是子类型约束不包含扩展标记的受约束整数那样进行编码这意味着枚举类型在实际中差不多总是被编码为表示每个枚举所需的最少位数中的某个位字段。存在扩展标记时,如果该值不在扩展根中,则其被编码为正常小非负整个数13.1枚举根中的若干枚举应根据其枚举值排列成升序,然后这些枚举应赋予以。开始的枚举索引,1赋予第2个枚举,以此类推,直到排序表中的最后一个枚举。扩展附加枚举(总是按升序定义)应赋予从0开始的枚举索引,l赋予给第2个枚举,以此类推,直到扩展附加枚举中的最后一个枚举。www.17jzw.co注:GB/T16262.1-2006要求每个连续的扩展附加枚举值应大于前一个13.2如果在枚举类型定义中不存在扩展标记,则应编码枚举索引。其编码应被视为不存在扩展标记的受约束整型值,其中下边界为。,而上边界为与该类型相关联的最大枚举索引,过程结束13.3如果存在扩展标记,则单个位应添加到长度为1的位字段内的字段列表中如果被编码值不在扩展根中,则应将该位置为1,否则置为0。对前一种情况,应按照13.1将枚举附加枚举排序,该值应作为正常小非负整个数添加到字段列表中,该整个数的值是附加枚举的枚举索引,并且其“Ib”置为。,过程结束。对后一种情况,就好像扩展标记不存在那样,该值应按照13.2的规定进行编码。注:没有可适用于枚举类型的PER可视约束对这些编码规则来说是可视的14实数类型的编码注:〔说明性)实数使用以长度决定因子开头的CER/DER内容八位位组,在实际中,该长度决定因子是单个八位www.17bzw.cn位组14.1如果抽象值的基数是10,则编码值的基数应是10,如果抽象值的基数是2,则编码值的基数应该是214.2应使用GB/T16263.1中的CER和DER所规定的实数编码来给出某个位字段(在ALIGNED变体中的八位位组对齐),该位字段是CER/DER编码的内容八位位组该编码的内容八位位组由“n’)个八位位组构成,并且被放在“n’个八位位组的位字段(在ALIGNED变体中的八位位组对齐)中。应引用10.9的过程把这一“n’个八位位组的位字段(在ALIGNED变体中的八位位组对齐)添加到字段列表上,前面是等于“n’)的不受约束的长度决定因子。15位串类型的编码注:(说明性)受约束于固定长度小于或等于16位的位串不会引起八位位组对齐较大位串是在ALIGNED变体中的八位位组对齐的。如果长度被若干约束所固定,且上边界小于64K,则没有显式的长度编码,否则,所包含www.17jzw.ne的长度编码可以采用任何一种前面规定的长度编码的形式,包括大型位串的分片17www.3x888.co GB/T16263.2-2006八SO/IEC8825-2:200215.1PER可视约束只能约束位串的长度15.2在不存在PER可视约束,并且应用GB/丁16262.1-2006的21.7的场合,该值应编码为不带尾。位(注,这意味着不带置为1的位的值总被编码为空位串)。15.3在存在PER可视约束,并且应用GB/T16262.1-2006的21.7即位串类型用“NamedBltLlst"定义)的场合,当有必要保证发送值的长度是能运载该值的最小长度,并且满足有效长度约束时,该值应是使用增加或去掉尾0位的编码。15.4设位串(在长度上由PER可视约束所确定)中的最大位数为“ub",最少位数为“16"如果没有有限最大长度,则我们说“ub"未设置。如果在最小长度上没有约束,则“比”为。。设要编码的实际位串值的长度为“n”位。15.5当位串值按15.6到15.11的规定放到某个位字段中时,位串值的引导位应放在该位字段的引导位上,并且位串值的末尾位应放在该位字段的末尾位上。15.6如果位串类型的长度约束规范中存在扩展标记,则应把单个位添加到长度为1的位字段内的字段列表中。如果该编码的长度不在扩展根的范围内,则该位应被置1,否则置。。对前一种情况,应引用15.11将长度作为半受约束的整个数加到字段列表中,其后是位串值。对后一种情况,长度和值应按扩展标记不存在的情况进行编码15.7如果位串类型的长度约束规范中不存在扩展标记,则适用15.8到15.11,15.8如果位串被约束为。长度("ub”等于0),则应不对其进行编码(字段列表不添加位串),本条过程结束。15.9如果位串的所有值都被约束为同一长度("ub"等于“lb"),并且长度小于或等于16位,则位串应被放人到约束长度为“ub”的位字段中,该“ub"应被附加到无长度决定因子的字段列表上,本条过程结束。15.10如果位串的所有值都被约束为同一长度("ub”等于“16"),并且该长度大于16位,但小于64K位,则位串应被放人到长度为“ub"(不必是8位的整数倍)的位字段(在ALIGNED变体中的八位位组对齐)中,且该位串应被附加到不带长度决定因子的字段列表上,本条过程结束。15.11如果15.8到15.10不适用,则位串应被放人到长度为“n"位的位字段(在ALIGNED变体中的八位位组对齐)中,且应引用10.9的过程把这个“n"位的位字段(在ALIGNED变体中的八位位组对齐)添加到字段列表中,如果设置了“ub"且小于64K,则该字段列表前面是作为受约束的整个数的等于.}n"位的长度决定因子,或者,如果未设置"ub",则该字段列表前面是作为半受约束的整个数的等于“n"位的长度决定因子。"Ib"如上确定。注对于16K,32K,48K或者64K位之后不受约束的或大型的“ub",分片过程适用16八位位组串类型的编码注:(说明性)固定长度小于或等于两个八位位组的八位位组串不是八位位组对齐的。所有其他八位位组串都是在ALIGNED变体中八位位组对齐的如果长度八位位组小于64K,则固定长度的八位位组串编码中没有长度八位位组。对于不受约束的八位位组串,该长度则被显式编码(必要时使用分片)16.1PER可视约束只能约束八位位组串的长度16.2设八位位组串(在长度上由PER可视约束所确定)中八位位组的最大数目为“ub",最小数目为"Ib"。如果没有有限最大值,则我们说“ub”未设置。如果在最小值上没有约束,则“lb"为。。设要编码的实际八位位组串的值的长度为“n”个八位位组16.3如果在八位位组串中存在PER可视长度约束和扩展标记,则应把单个位添加到长度为1的位字段内的字段列表中。如果该编码的长度不在扩展根的范围内,则该位应被置1,否则置0。对前一种情况,应引用16.8将长度作为半受约束的整个数加到字段列表中,其后是八位位组串值。对后一种情况,长度和值应按扩展标记不存在的情况进行编码。18 GB/T16263.2-2006/ISO/IEC8825-2:200216.4如果在八位位组串类型的约束规范中不存在扩展标记,则适用16.5至16.816.5如果八位位组串被约束为0长度("ub"等于0),则不应对其进行编码(对字段列表不添加八位位组),本条过程结束。16.6如果八位位组串的所有值都被约束为同一长度("ub”等于“lb"),并且该长度小于或等于两个八位位组,则八位位组串应放到位数等于受约束长度为八倍“ub”的位字段中,该长度应被添加到不带长度决定因子的字段列表上,本条过程结束。16.7如果八位位组串的所有值都被约束为同一长度("ub”等于“lb"),并且该长度大于两个八位位组,但小于64K,则八位位组串应放到受约束长度为“ub"的位字段(在ALIGNED变体中的八位位组对齐)中,且该长度应被添加到不带长度决定因子的字段列表上,本条过程结束。16.8如果16.5到16.7不适用,则八位位组串应放到长度为“n"个八位位组的位字段(在ALIGNED变体中的八位位组对齐)中,且应引用10.9的过程把该“砂个八位位组的位字段(在ALIGNED变体中的八位位组对齐)添加到字段列表上,如果设置了“ub",则该字段列表前面是作为受约束的整个数的等于“n"个八位位组的长度决定因子,如果未设置“ub",则该字段列表前面是作为半受约束的整个数的等于“n"个八位位组的长度决定因子。"16"如上确定。注在16K,32K,48K或64K个八位位组之后,分片过程可能适用.17空值类型的编码注:(说明性)空值类型基本上是一个位置容纳器,仅在选择、可选集合或序列成分的情况下才有实际意义。选择中的空值、或者可选元素中存在的空值的标识按这些编码规则进行,而无需用八位位组表示空值。因此,空值从不影响编码的八位位组www.17jzw.co对于空值的字段列表不应有任何附加部分。18序列类型的编码注:〔说明性)序列类型以位图前导码开始.如果该序列类型没有扩展标记,则该位图只记录该类型中默认或可选成分的存在与否,编码为固定长度的位字段。如果该序列类型有扩展标记,则该位图前有单个位说明编码中扩展附加部分的值是否真的存在。只要前导码的长度小于64K位,其编码就不带任何长度决定因子,否则编码长度决定因子以获得分片。该前导码后面依次是将每个成分编码的字段.如果存在扩展附加部分,则第1个被编码的扩展附加部分前面是被编码类型中的扩展附加数目计数的编码(作为正常小长度),后面是长度等于该计数的位图,记录每个扩展附加部分存在与否。其后是各扩展附加部分的编码,各扩展附加部分就像是开放类型字段的值18.1如果序列类型具有扩展标记,则应首先将单个位添加到长度为1的位字段内的字段列表中。如果编码中存在扩展附加值,则该位应被置1,否则置。。(该位在下文中称为“扩展位”。)如果没有扩展标www.17bzw.c记,则应不添加扩展位。18.2如果序列类型在扩展根内有“n"个成分,标记为OPTIONAL或者DEFAULT,则应产生带有“n"位的单个位字段作为字段列表的附加部分。该位字段的这些位应依次对序列类型中每个可选或者默认成分的编码存在与否进行编码。位值为1应编码为成分的编码存在,位值为。编码为成分的编码不存在。前导码中的引导位应对第1个可选或者默认成分的存在与否进行编码,末尾位应对最后1个可选或者默认成分的存在与否进行编码。18.3如果“n"小于64K,则该位字段应添加到字段列表上如果“n"大于或等于64K,则应引用10.9的过程把这个“n"位的位字段添加到字段列表上,其前面是作为受约束的整个数的等于“n’位的长度决定因子,它的“ub”和“lb"都是“n0e注在这种情况下,"ub”和“lb"都将被长度过程忽略。这里引用这些过程是为了提供大前导码的分片。这种情况应该很少出现www.17jzw.ne18.4这个前导码后面应是每个依次存在的序列值成分的字段列表I9www.3x888.co GB/T16263.2-2006八SO/IEC8825-2:200218.5对于CANONICAL-PER,如果要被编码的值是个默认值,则标记为DEFAULT的成分的编码应总是不存在。对于BASIC-PER,如果要被编码的值是个简单类型(见3.6.25)的默认值,则标记为DE-FAULT的成分的编码应总是不存在,否则是否对其进行编码是发送器的一个选择。18.6如果扩展位不存在或者扩展位为。,则编码完成。如果扩展位存在并且置为1,则应用下列过程。18.7设要被编码的类型中扩展附加部分的数目为“n",则应产生“n"位的位字段,以便加到字段列表,该位字段的位应依次对要被编码的类型中每个附加部分编码的存在与否进行编码。位值为1是对扩展附加部分编码的存在进行编码,位值为。是对扩展附加部分编码的不存在进行编码。位字段中引导位应对第1个扩展附加部分的存在与否进行编码,末尾位应对最后一个扩展附加部分的存在与否进行编码。注:如果声称与规范的特定版本一致,则值“n’总是等于该版本的扩展附加的数目.18.8应引用10.9的过程把该“n"位的位字段添加到字段列表上,其前面是作为正常小长度的等于"n”的长度决定因子。注:“n’不能是0,因为该过程只在至少存在一个被编码的扩展附加部分时引用。18.9其后应依次是包含每个存在的扩展附加部分的编码的字段。每个“ComponentType"(即,不是"ExtensionAdditionGrou衅)的扩展附加部分应按10.2.1规定的那样进行编码,好像它是一个开放类型字段的值每个“ExtensionAdditionGrou衅的扩展附加部分应按18.2到18.6的规定编码为序列类型,然后再如10.2.1规定的那样进行编码,好像它是一个开放类型字段的值。如果“ExtensionAddit-ionGroup",的所有成分值都缺少,则“ExtensionAdditionGroup",应编码为缺少扩展附加部分(即在18.7中描述的位字段的相应位应置为。。)注1:如果“ExtensionAdditionGroup",含有标记为OPTIONAL或DEFAULTWTBZ的成分,则“ExtensionAdditionGroup”用位图做前缀,表明每个标记为OPTIONAI一或DEFAULT的成分值是否存在.注2:在“扩展标记对”之后定义的“RootComponentTypeList”成分按其在扩展标记对前面直接定义的那样进行编码。19单一序列类型的编码19.1PER可视约束能约束单一序列类型成分的数目。19.2设单一序列中的最大成分数目(由PER可视约束确定)为“ub",最小成分数目为“16"。如果没有有限最大数目或者“u6”大于或等于64K,我们说“ub”未设置。如果在最小值上没有约束,则“16"的值为0。设要被编码的实际单一序列值成分的数目为“n"个成分。19.3单一序列的每个成分的编码将生成许多字段,以便添加到单一序列类型的字段列表。19.4如果其中具有PER可视约束且扩展标记存在,则应将单个位添加到长度为1的位字段内的字段列表中。如果该编码的成分数目不在扩展根的范围内,则该位应置1,否则置0。对前一种情况,应引用10.9的过程将长度决定因子作为半受约束的整个数添加到字段列表中,其后是成分值。对后一种情况,长度和值应按扩展标记不存在的情况进行编码。19.5如果成分数固定("ub”等于,"16"),且“u6”小于64K,则对于单一序列应没有长度决定因子,每个成分的字段应依次添加到该单一序列的字段列表上。19.6否则,应引用10.9的过程将“n"个成分生成的字段的列表添加到字段列表上,如果设置了“ub",其前面是作为受约束的整个数的等于“n"个成分的长度决定因子,如果未设置"ub",则其前面是作为半受约束的整个数的等于“n"个成分的长度决定因子。"16”如上确定注1:在16K,32K,48K或64K个成分(components)之后,分片过程可能适用。注2:分片的断点在字段之间。在断点之前的位数不必是八的整数倍20集合类型的编码集合类型应将“RootComponentTypeList",中的元素排序为GB/T16262.1-2006中8.6规定的正20 GB/T16263.2-2006/ISO/IEC8825-2:2002则次序,另外,当一个或多个成分是无标签的选择类型时,为了决定成分编码的次序,每个无标签的选择类型按照它具有标签等于该选择类型或者任何被嵌套的无标签的选择类型的“RootAlternative-TypeList”中最小的标签那样进行排序。出现在“RootComponentTypeList”中的集合元素应被编码成好像它已经声明了序列类型。出现在“ExtensionAdditionList”中的集合元素应进行的编码好像它们都是按18.9规定的序列类型的成分那样进行编码(即它们以已定义的次序编码)。例如,IMPLICITTAGS的置标签环境假设如下:A::二SET[3]INTEGER[11CHOICEc[2]INTEGER,d[4]INTEGERCHICEf以l(C厄lg.5,INTEGER,h16,JINTEGERwww.17jzw.co.洲兀CE.JO丑INTEGER,|}}被编码的集合成分的次序总是e,b,a,因为标签[。」排序最低,然后是[1],[3]21单一集合类型的编码21.1对于CANONICAL=PER,单一集合类型成分值的编码应以升序出现,作为与位串比较的成分编www.17bzw.c码其尾端用最多7个。位被填充到八位位组的边界,如果需要,则向比较短的位串增加。个八位位组以使其长度等于较长的位串。注:为排序而增加的任何填充位或填充八位位组都不出现在实际的编码中21.2对于BASIC-PER,单一集合应编码为好像它已经被声明为单一序列类型那样进行编码。22选择类型的编码(说明性)选择类型的编码通过编码指定的选定项的索引来进行的。这是关于受约束整数(除非在选择类型中存在扩展标记,在这种情况下,它是一个正常小非负整个数)的编码,因此这将典型地占用编码该索引所需的最小位数的固定长度位字段(虽然在理论上它可以任意大)。这后面是选定项的编码,在扩展附加部分的选定项被编码时就好像它们是一个开放类型字段的值那样进行编码.只有唯一选定项时不编码索引选择类型的编码不受PER可视的影响。www.17jzw.ne::_;选择的每个成分有一个相关的索引,在选择的根中的第1个选定项的索引值为。(按21www.3x888.co GB/"r16263.2-2006/ISO/IEC8825-2:2002GB/T16262.1-2006,8.4规定的正则次序取选择项),第2个为1,直到选择的扩展根中的最后一个成分索引值以类似方式赋给“ExtensionAdditionAlternativesList",中的每个“NamedType",从。开始,就像以扩展根的成分开始一样。设“n’为根中的最大索引值注:GB/T16262.1-2006的28.4要求每个连续的扩展附加部分应有比添加到“ExtensionAdditionAlternativesList”中的上一个附加值大的标签值。22.3对于含有无标签选择的选择项的正则排序,每个无标签的选择类型应进行的排序就好像它有一个标签等于该选择类型或者任意被嵌套的无标签选择类型的最小标签那样排序。22.4如果选择在扩展根中只有一个选择项,那么如果选定该选择项,则应不对索引进行编码22.5如果选择类型有一个扩展标记,则首先应将单个位添加到长度为1的位字段内的字段列表中。如果在编码中存在扩展附加值,则该位应置1,否则置。。(该位在下列文本中称为“扩展位”)如果没有扩展标记,则应不增加扩展位。22.6如果不存在扩展位,选定项的选择索引应按照第12章的过程编码到一个字段中,仿佛它是一个约束到范围0至“n"的整数值(在其子类型约束中没有扩展标记),且应添加该字段到字段列表上。其后应是选定项的字段,本条过程结束。22.7如果存在扩展位,并且选定项位于扩展根内,则根据第12章的过程,应编码该选定项的选择索引,本条过程结束。22.8如果扩展位存在,并且选定项不在扩展根内,则该选定项的选择索引应编码为一个正常小非负整个数,其“比”置为。,该字段应添加到字段列表上。其后应是含有选定项编码的字段,仿佛该选定项是10.2所规定的开放类型字段的值,本条过程结束。注在选择扩展附加部分的定义中的版本括号对怎样编码"ExtensionAdditionAlternatives"没有影响23客体标识符类型的编码注:(说明性)客体标识符类型的编码使用前面有长度决定因子的BER的内容八位位组,在实际中长度是单个八位位组。应使用为BER规定的编码给出一个位字段(在ALIGNED变体中的八位位组对齐),它是该BER编码的内容八位位组。该BER编码的内容八位位组由“n’个八位位组构成,被放人一个“n"个八位位组的位字段(在ALIGNED变体中的八位位组对齐)中。应引用10.9的过程将这个位字段(在ALIGNED变体中的八位位组对齐)添加到字段列表上,其前面是作为半受约束的整个数的八位位组计数的等于"n”的长度决定因子。24相关客体标识符类型的编码注:(说明性)相关客体标识符类型的编码使用前面有长度决定因子的BER内容八位位组,在实际中长度是单个八位位组。下列正文与23章中的正文一样。应使用为BER规定的编码给出一个位字段(在ALIGNED变体中的八位位组对齐),它是该BER编码的内容八位位组该BER编码的内容八位位组由“韶个八位位组构成,被放人一个“n"个八位位组的位字段(在ALIGNED变体中的八位位组对齐)中应引用10.9的过程将这个位字段(在ALIGNED变体中的八位位组对齐)添加到字段列表上,其前面是作为半受约束的整个数的八位位组计数的等于"n”的长度决定因子25嵌入式pdv类型的编码25.1嵌人式pdv类型可以用下列方式编码a)嵌人式pdv类型的选项syntaxes使用PER可视内部类型约束约束为单个值,或者选项identi-fication使用PER可视内部类型约束约束为fixed选择项,在这种情况下,应只有data-value被27 GB/T16263.2-2006/ISO/IEC8825-2:2002编码;这称为“预定义”情况。b)内部类型约束既不用来约束syntaxes选项为单个值,也不约束identification为fixed选择项,在这种情况下,identification和data-value都应被编码;这称为“通常’,情况25.2在“预定义”情况下,嵌人式pdv类型值的编码应是《)CTETSTRING类型值的PER编码。该OCTETSTRING值应是形成GB/T16262.1-2006的33.3a)中引用的单个数据值完整编码的八位位组。25.3在“通常’,情况下,嵌人式pdv类型值的编码应是在GB/T16262.1-2006的33.5中定义的类型的PER编码,同时去掉data-value-descriptor元素(即,在SEQUENCE编码的头部应没有OPTIONAL位图)。类型OCTERSTRING的data-value成分的值应是形成GB/T16262.1-2006的33.3a)中的单个数据值完整编码的八位位组26外部类型值的编码26.1外部类型值的编码应是下列序列类型的PER编码,假设在一个EXPLICITTAGS的环境下定义,值在下面子条中指定:[UNIVERSAL8jIMPLICITSEQUENCE{direct-referenceOBJECTIDENTIFIEROPTIONAL,indirect-referenceINTEGEROPTIONAL,data-value-descriptorObjectDescriptorOPTIONAL,encodingCHOICE{single-ASN1-type[0]ABSTRACT-SYNTAX.&Type,www.17jzw.cooctet-aligned[1皿IMPLICITOCTETSTRING,arbitrary[2]IMPLICITBITSTRING}}注:此序列类型不同于GB/T16262.1-2006中的规定。26.2成分值依赖于被发送的抽象值,它是GB/T16262.1-2006的33.5中定义的类型值。26.3当且仅当data-value-descriptor存在于抽象值中,且它们应有相同的值,上述data-value-descrip-tor才应存在。26.4上述direct-reference和indirect-reference的存在与否与表1一致。表1将GB/T16262.1-2006中的33.5中定义的identification的外部类型选项映射到26.1中定义的外部类型成分direct-ref-erence和indirect-reference上。表1identification的替换编码identificationdirect-referenceindirect-referencewww.17bzw.csyntaxes釜关关不能出现并关釜,,,不能出现釜关长syntaxsyntax不存在presentation-context-id不存在presentation-context-idcontext-negotiation传送语法presentation-context-idtransfer-syntax关关釜不能出现爷关釜釜关釜不能出现并釜爷fixed等釜釜不能出现关釜关关关关不能出现关爷关26.5数据值应按照编码所标识的传送语法进行编码,并应放到下面规定的encoding选择的选项上。26.6如果数据值是单个ASN.1数据类型值(见26.7的注),并且该数据值的编码规则是在本部分中规定的那些,则发送实现应使用single-ASN1-type选项26.7否则,如果数据值使用同意或协商的编码进行编码,其编码是一个八位位组的整数,则发送实现www.17jzw.ne应编码为octet-aligned23www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002注:一个数据值,它是一系列ASN.1类型的值,并且传送语法为其规定了八位位组串的简单拼接,这些八位位组串是在每个ASN.1类型上应用ASN.1基本编码规则产生的,属于本类别,而不是26.6,26.8否则,如果数据值使用同意或协商的编码进行编码,其编码不是八位位组的整数倍,则选择enco-ding应是arbitrary,26.9如果encoding选择选定为single-ASN1-type,则ASN.1类型应按10.2的规定进行编码,其值等于要被编码的数据值。注:可能出现在开放类型中的值的范围由与direr卜reference相关联的客体标识符值和/或与indirect-reference相关联的整数值的注册来确定。26.10如果encoding选择是octet-aligned,则该数据值应按照同意或协商的传送语法进行编码,所得结果八位位组应形成八位位组串的值。26.11如果encoding选择是arbitrary,则该数据值应按照同意或协商的传送语法进行编码,所得结果八位位组应形成位串的值。27受限字符串类型的编码注1:(指导ALIGNED变体)小于或等于两个八位位组的固定长度字符串不是八位位组对齐的。被约束为最大长度小于两个八位位组的可变长度的字符串不是八位位组对齐的所有其他的字符串在ALIGNED变体中都是八位位组对齐的如果固定长度字符串的长度小于64K字符,则其编码在没有长度八位位组下进行。对不受约束的字符串或长于64K-1的受约束字符串,其长度被显式编码(必要时分片)每个NumerieString,PrintableString,VisibleString(ISO646String)、IA5String,BMPSring,UnivenalString字符被编码为能接纳有效允许字母表约束所允许的所有字符的2的最小幂的位数注2:(指导UNALIGNED变体)字符串不是八位位组对齐的。如果只有一种可能长度值,如果长度小于64K,则不存在长度编码。对不受约束的字符串或长于64K-1的受约束字符串,长度被显式编码(必要时分片).每个NumerieString,PrintableString,VisibleString(IS0646String),IA5String,BMPSring,UniversalString字符被编码为能接纳有效允许字母表约束所允许的所有字符的最小位数。注3;(指导每个被编码字符的长度)每个字符的编码依赖于有效允许字母表约束(见9.3.11),该约束定义类型使用的字母表假设该字母表由字符集ALPHA构成。对于每个已知倍数字符串类型(见3.6.16),有一个与每个字符相关联的整数值,其通过引用该受限字符串类型相关联的某个编码表获得与字符集ALPHA对应的值集BETA用来确定所使用的编码,过程如下:每个字符编码的位数仅由值集BETA(或字符集ALPHA)中元素的个数N来确定。对于UNAL工GNED变体,它是能把值N一1编码为非负二进制整数的最小位数。对于ALIGNED变体,它是2的幂且能把值N-1编码的最小位数。假设选择的位数是B。如果在值集BETA中的每个值都可以编码(无变换时)在B位中,则用值集BETA中的值来表示字符集ALPHA中相应的字符。否则,将值集BETA中的值按照升序取出,用值。,1,2,依此类推,直到N-1所代替,用这些值表示对应的字符总之,总是使用最小位数(对于ALIGNED变体取下一个2的幂).给出使用与这些字符正常关联的值的优先权,但是如果这些值不能按最小位数编码,则使用紧缩编码27.1下列受限字符串类型是已知倍数字符串类型:NumericString,PrintableString,VisibleString(ISO646String),IA5String,BMPSring,UniversalString。有效允许字母表约束只对这些类型是PER可视的。27.2有效长度约束记法可以确定抽象字符串长度的上边界“aub"。否则,"aub"不设置。27.3有效长度约束记法可以确定抽象字符串长度的非0下边界“alb"。否则,"alb"为。。注:PER可视约束只适用于已知倍数字符串类型对于其他受限字符串类型,将不设置“aub0,且“alb"为。27.4如果类型对PER编码可扩展(见9.3.16),则应将由单个位构成的位字段添加到字段列表上。如果该值处在扩展根范围内,则该单个位应置。,否则置1。如果该值处在扩展根的范围外,则下列的编码应是好像不存在有效长度约束一样,且应具有一个构成不受约束类型字符集的有效允许字母表约束。注:只有已知倍数字符串类型对PER编码可扩展。其他字符串类型上的可扩展标记对PER编码没有影响27.5本条适用于已知倍数字符串。其他受限字符串类型的编码在27.6规定。27.5.1有效允许字母表定义为被允许字母表约束所允许的字母表,或者如果没有允许的字母表约束,24 GB/T16263.2-2006/ISO/IEC8825-2:2002则定义为内置类型的完整字母表27.5.2设N为有效允许字母表中的字符数。设B为2的B次幂大于或等于N的最小整数。设B2为大于等于B的2的最小幂。那么,在ALIGNED变体中,每个字符应编码为B2个位,在UNA-LIGNED变体中为B位。设此规则所标识出的位数为“b"e27.5.3通过如下引用GB/T16262.1-2006中的第39章,使一个数值“V"同每个字符相关联。对于UniversalString,该值用来确定GB/T16262.1-2006的39.3中的正则顺序(该值在0至2"一1之间)的值。对于BMPString,该值用来确定39.3中的正则顺序(该值在。至2"s-1之间)的值。对于Num-ricString和PrintableString,VisibleString(IS0646String),IA5String,该值是为GB/T1988相应字符的编码定义的值。(对于IA5String,该值的范围在。至127之间,对于VisibleString,该值的范围在32至126之间,对于NumricString,该值的范围在32至57之间,对PrintableString,该值的范围在32至122之间。对于IA5String和VisibleString,范围内的所有值都存在,但是,对于PrintableString和Numric-String不是范围内的所有值都被使用。)27.5.4设允许字母表中字符集范围内的最小值为“lb",最大值为“ub",则进人“b”位中的字符编码是如下标识出的值“d"的非负二进制整数编码:a)如果“ub”小于或等于2“一1,则“v"是上述规定的值,否则b)字符按GB/T16262.1-2006的第39章规定的正则顺序加以放置第1个字符赋予的值为0,正则顺序的下一个字符赋予的值比上一个字符赋予的值大1。这些赋予的值是“v"o注上面a)项从不适用于受约束或不受约束的NumricString字符,它总是使用b)编码为4位或者更少位数。27.5.5应通过将每个字符(使用合适的“v"值)编码为非负二进制整数进人“b”位中,将其拼接形成"b"位的整数倍的位字段,来获得完整字符串的编码。www.17jzw.co27.5.6如果、ub”等于、16”并且小于64K,如果“aub"乘以“b"大于16,则该位字段应作为位字段(在ALIGNED变体中的八位位组对齐)添加到位字段列表上,否则,应作为非八位位组对齐的位字段添加到位字段列表上。本条过程结束27.5.7如果“aub"不等于“alb",或者大于或等于64K,则应引用10.9的过程添加“n"长度决定因子作为字符串中的字符计数,同时长度决定因子的下边界为“alb",上边界为“aub"。如果“aub"乘以“b"大于或等于16,则该位字段作为一个字段(在ALIGNED变体中的八位位组对齐)添加到位字段列表上,否则应作为非八位位组对齐的位字段添加到位字段列表上。本条过程结束程。注:27.5.6和27.5.7都规定若“aub"乘以“b"小于16,则不对齐,若大于16,则对齐。对正好等于16的值,27.5.6规定不对齐,27.5.7规定对齐。27.6本条适用于未知倍数字符串的字符串。在这种情况下,约束从不是PER可视的,该类型对PER编码也从不可扩展。www.17bzw.c27.6.1对于BASIC-PER,下面对于“基本编码”的引用意思是BER编码的内容八位位组。对于CA-NONICAL-PER,它的意思是在GB/T16263.1-2006中为CER和DER规定的编码的内容八位位组。27.6.2“基本编码”应适用于给出“n’个八位位组字段的字符串。27.6.3应引用10.9添加一个作为八位位组计数的不受限的长度决定因子“n’,并且“n’个八位位组的字段应作为一个位字段(在ALIGNED变体中的八位位组对齐)添加,本条过程结束28不受限字符串类型的编码28不受限字符串类型可以用下列两种方式编码:a)不受限字符串类型的选项syntaxes使用PER可视内部类型约束约束为单个值,或者identifi-cation使用PER可视内部类型约束约束为fixed选项,在这种情况下,应只编码string-value,这称为“预定义”情况。www.17jzw.neb)内部类型约束既不用来约束syntaxes选项为单个值,也不约束identification为fixed选项,在25www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002这种情况下,identification和string-value都应被编码;这称为“一般,,情况。28.2对于“预定义,J清况,CHARACTERSTRING类型值的编码应是OCTETSTRING类型值的PER编码。OCTETSTRING类型值是形成GB/T16262.1-2006的40.3a)中引用的字符串值完整编码的八位位组。28.3对于“一般’,情况,不受限字符串类型值的编码是GB/T16262.1-2006中的40.5中定义的类型的PER编码同时去掉data-value-descriptor成分(即,在SEQUENCE编码的头部应没有OPTIONAL位图)。类型OCTERSTRING的data-value成分的值应是形成GB/T16262.1-2006的40.3a)中的字符串值完整编码的八位位组。29传送语法的客体标识符29.1本部分规定的编码规则可以在需要为单个ASN.1类型所有值规定无歧义位串表示时被引用和应用。29.2下列客体标识符和客体描述值被赋予用来标识和描述本部分规定的编码规则:对BASIC-PER,ALIGNED变体:{joint-iso-itu-tasnl(1)packed-encoding(3)basic(0)aligned(0)}"PackedendodingofasingleASN.1type(basicaligned)”对BASIC-PER,UNALIGNED变体:{joint-iso-itu-tasnl(1)packed-encoding(3)basic(0)unaligned(1)}"PackedendodingofasingleASN.1type(basicunaligned)”对CANONICAL-PER,ALIGNED变体:{joint-iso-itu-tasnl(1)packed-encoding(3)canonical(1)aligned(0)}"PackedendodingofasingleASN.1type(canonicalaligned)”对CANONICAL-PER,UNAIAGNED变体:{joint-iso-itu-tasnI(1)packed-encoding(3)canonical(1)unaligned(1)}"PackedendodingofasingleASN.1type(canonicalunaligned)”29.3如果应用标准把抽象语法定义为抽象值集合,其值是使用ASN.1记法定义的某个特定命名的ASN.1类型的值,则29.2中指定的客体标识符值可以与抽象语法名一起来标识传送语法,这些传送语法是由于把本部分中规定的编码规则应用到定义抽象记法时使用的特定命名的ASN.1类型上引起的结果。29.4如果29.3抽象语法定义的条件不满足,则29.2中规定的名字不应与抽象语法名一起用来标识传送语法。 GB/T16263.2-2006/ISO/IEC8825-2:2002附录A(资料性附录)编码实例本附录通过示出使用ASN.1定义的(假设的)个人记录的八位位组的表示来说明本部分规定的紧缩编码规则的使用A.1不使用子类型约束的记录A.1.1记录结构的ASN.1描述假设的个人记录的结构使用GB/T16262.1-2006规定的ASN.1形式地描述类型定义如下。它与GB/T16263.1-2006中附录A定义的实例相同。PersonnelRecord::=[APPLICATION0口IMPLICITSET{nameName,title[0]VisibleString,numberEmployeeNumber,dateOfHire[1口Date,nameOfSpouse[2]Name,children[3]IMPLICITwww.17jzw.coSEQUENCEOFChildInformationDEFAULT{}}ChildInformation::=SETnameName,dateOfBirth[0]Date}Name::=[APPLICATION1]IMPLICITSEQUENCE{givenNameVisibleString,initialVisibleString,familyNameVisibleString)www.17bzw.cEmployeeNumber::=[APPLICATION2]IMPLICITINTEGERDate::=[APPLICATION3]IMPLICITVisibleString一YYYYMMDDA门.2记录值的ASN.1描述JohnSmith的个人记录值使用ASN.1形式地描述如下{name{givenName"John",initial"P",familyName"Smith"),title"Director",number51,dateOfHire"19710917",nameOfSpouse{givenName"Mary",initial"T",familyName"Smith",childrenwww.17jzw.ne{{name{givenName"Ralph",initial"T",familyName"Smith"www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002dateOfBirth"19571111"),{{name(givenName"Susan",initial"B",familyName"Jones"),dateOfBirth"19590717"}})A.1.3本记录值的ALIGNEDPER表示上面给出的记录值的表示(在应用本部分定义的紧缩编码规则的ALIGNED变体之后)如下所示。编码以十六进制示出,后面是以二进制示出的编码的注释描述。该编码的长度是94个八位位组,而相同的使用PER的UNALIGNED变体进行编码的个人记录值则为84个八位位组,限定长度形式的BER至少为136个八位位组,不定长度形式的BER至少为161个八位位组。A.1.3.1十六进制视图80044A6F686EO15005536D6974680133084469726563746F72083139373130393137044D617279015405536D697468020552616C7068015405536D69746808313935373131313105537573616EO142054A6F6E6573083139353930373137A.1.3.2二进制视图为了使数据的二进制视图更容易读懂,用空行将逻辑上的一组字段分在一起(典型情况为长度/值对);用换行分割字段;用空格分割字符串内的字符;`x"表示一个。填充位,它有时用来为填充八位位组边界而对齐字段lxxxxxxx位图位=1表示存在”children"00000100namegivenName的长度=401001010011011110110100001101110namegivenName--"John"00000001nan」e-initial的长度=101010000name.initial="P"00000101name-familyName的长度=50101001101101101011010010111010001101000name.familyName="Smith"00000001(employee)number的长度=100110011(employee)number=5100001000title的长度=80100010001101001011100100110010101100011011101000110111101110010title="Director"00001000dateOfHire的长度=80011000100111001001101110011000100110000001110010011000100110111dateOfHire="19710917"00000100nameOfSpouse.givenName的长度=401001101011000010111001001111001nameOfSpouse.givenName="Mary"00000001nameOfSpouse.initial的长度二128 GB/T16263.2-2006/ISO/IEC8825-2:200201010100nameOfSpouse.initial="T"00000101nameOfSpouse.familyName的长度=50101001101101101011010010111010001101000nameOfSpouse.familyName二”Smith"00000010children的个数00000101children[0].givenName的长度二50101001001100001011011000111000001101000children仁0].givenName="Ralph"00000001children[0].initial的长度=101010100children[0刁.initial="T"00000101children[0].familyName的长度=50101001101101101011010010111010001101000children[0].familyName-"Smith"00001000children[0].dateOfBirth的长度=80011000100111001001101010011011100110001001100010011000100110001children[0].dataOfBirth="19571111"www.17jzw.co00000101children仁1].givenName的长度=50101001101110101011100110110000101101110children巨1].givenName-"Susan"00000001children[1].initial的长度=101000010children[1].initial="B"00000101children[l].familyName的长度=50100101001101111011011100110010101110011children[1].familyName二”Jones"00001000children[l丑.dateOfBirth的长度=80011000100111001001101010011100100110000www.17bzw.c001101110011000100110111children[l].dateOfBirth="19590717"A.1.4本记录值的UNALIGNEDPER表示上面给出的记录值的表示(在应用本部分定义的紧缩编码规则的UNALIGNED变体之后)如下所示。编码以十六进制示出,后面是以二进制示出的编码注释描述。注意填充位没有出现在UNA-LIGNED变体中,而字符也尽可能用最少的位数编码。该编码的长度是84个八位位组,而相同的使用PER的ALIGNED变体编码的个人记录值为94个八位位组,限定长度形式的BER至少为136个八位位组,不定长度形式的BER至少为161个八位位组。A.1.4.1十六进制视图824ADFA3700DO05A7B74F4DO026611134F2CB8FA6FE410C5CB762CICB16EO937OF2F20350169EDD3D340102D2C3B3868OIA80B4F6E9E9AO218B96ADD8B162C41www.17jzw.ne69F5E787700020595BF765E6IOC5CB572CIBB16E29www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002A.1.4.2二进制视图为使数据的二进制视图更容易被读懂,用空行将逻辑上的一组字段分在一起(典型情况为长度/值对);用换行分割字段;用空格分割字符串内的字符;点()用来标记八位位组边界;‘x’表示对八位位组边界填充最后一个八位位组所用的。位。位图位=1表示存在”children"0000010.0nan】e-givenName的长度二41001010.110111110100011_01110naIllegivenName="John"000.00001name.initial的长度=1101.0000name.initial-T"0000.0101name.familyName的长度=51010.01111011.01110100.11110100.1101000name.familyName="Smith"0000001(employee)number的长度=10110011(employee)number-510.0001000title的长度=81.00010011.01001111.00101100.10111000.11111010.01101111.1110010title="Director"0.0001000dateOfHire的长度=80.11000101.11001011.01110110.00101100.00011100.10110001.0110111dateOfHire="197109170.0000100nameOfSpouse.givenName的长度二41.00110111.00001111.00101111.001nameOfSpouse.givenName-"Mary"00000.001nameOfSpouse.initial的长度=110101.00nameOfSpouse.initial="T"000001.01nameOfSpouse.familyName的长度=5101001.11101101_11010011.11010011.01000nameOfSpouse.familyName-"Smith"000.00010children的个数000.00101children仁0].givenName的长度=5101.00101100.00111011.00111000.01101000children[0],givenName-"Ralph"00000001children[0].initial的长度=1 GB/T16263.2-2006/ISO/IEC8825-2:20021010100children[0].initial二”T0000101childrenfamilyName的长度二501001111.01101110.10011110.10011010.00childrenfamilyName="Smith"000010.00children[0].dateOfBirth的长度=80110000111001.01101010.11011101.10001011.00010110.00101100.01children[0].dataOfBirth="19571111"000001.01children[l].givenName的长度=5101001.1111010111100111.10000111.01110children[l].givenName="Susan"children[l].initial的长度=1{::‘000101children厂1].initial="B"0000.0101children[l].familyName的长度=51001.01011011.11110111.01100101.1110011children[l].familyName="Jonesv0001000children[1口.dateOfBirth的长度=811000101.11001011.01010111.00101100.00www.17jzw.co0110110110001_011olllxchildren[1].dateOfBirth="19590717"A.2使用子类型约束的记录除了利用子类型记法在某些项上施加一些约束之外,本实例与A.1所示的相同。A.2门记录结构的ASN,1描述假定个人记录的结构使用GB/T16262.1-2006中规定的ASN.1形式地描述类型定义如下。PersonnelRecord::=[APPLICATION0]IMPLICITSET{nameName,title[0]VisibleString,numberEmployeeNumber,dateOfHire[1]Date,www.17bzw.cnameOfSpouse[2]Name,children仁3]IMPLICIT,SEQUENCEOFChildInformationDEFAULT{}}ChildInformation::=SET{nameName,dateOfBirth[0]Date)Name::=[APPLICATION1]IMPLICITSEQUENCE{givenNameNameString,initialNameString(SIZE(1)),familyNameNameString}EmployeeNumber::=[APPLICATION2口IMPLICITINTEGERwww.17jzw.neDate::=[APPLICATION3]IMPLICITVisibleString(FROM("0”二”9")“SIZE(8))www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002一yyy丫M八叔)DNameString::=VisibleString(FROM("a",二”Z"I"A",二”Z"I”一”)一SIZE(1二64))A.2.2本记录值的ASN.1描述JohnSmith的个人记录值使用ASN.1形式地描述如下。{name{givenName"John",initial”P",familyName"Smith"),title"Director",number51,dateOfHire"19710917",nameOfSpouse{givenName"Mary",initial"T",familyName"Smith"},children{(name{givenName"Ralph",initial"T",familyName"Smith"},dateOfBirth"19571111"},{name{givenName"Susan",initial"B",familyName"Jones"},dateOfBirth"19590717"}}}A.2.3本记录值的ALIGNEDPER表示上面给出的记录值的表示(在应用本部分定义的紧缩编码规则的ALIGNED变体之后)如下所示。编码以十六进制示出,后面是以二进制示出的编码注释描述在二进制视图中,`x"用来表示编码为0位的填充位,它们有时用来对齐字段。该编码的长度是74个八位位组,而相同的使用PER的UNALIGNED变体编码的个人记录值为61个八位位组,限定长度形式的BER至少为136个八位位组,不定长度形式的BER至少为161个八位位组。A.2.3.1十六进制视图864A6F686E5010536D6974680133084469726563746F72197109170C4D6172795410536D697468021052616C70685410536D6974681957111110537573616E42104A6F6E657319590717A.2.3.2二进制视图为使数据的二进制视图更容易读懂,用空行将逻辑上的一组字段分在一起(典型情况为长度/值对);用换行分割字段;用空格分割字符串内的字符;`x"表示一个0填充位,它有时用来为填充八位位组边界而对齐字段。位图位=1表示存在”children"000001lxname.givenName的长度=401001010011011110110100001101110nanlegivenName="John"01010000name.initial="P000100xxname.familyName的长度=50101001101101101011010010111010001101000name.familyName="Smith"00000001(employee)number的长度=100110011(employee)number=51 GB/T16263.2-2006八SO/IEC8825-2:200200001000title的长度=80100010001101001011100100110010101100011011101000110111101110010title="Director"00011001011100010000100100010111dateOfHire="19710917"000011xxnameOousegivenName的长度=401001101011000010111001001111001nameOouse.givenName="Mary"01010100nameOfSpouse.initial="T"000100xxnameOfSpouse.familyName的长度=50101001101101101011010010111010001101000nameOfSpouse.familyName二”Smith"00000010children的个数000100xxchildren仁0].givenName的长度=50101001001100001011011000111000001101000children[0].givenName="Ralph"www.17jzw.co01010100children[O].initial-"T"000100xxchildren[0].familyName的长度=50101001101101101011010010111010001101000children[0].familyName="Smith"00011001010101110001000100010001children[0].dataOfBirth="19571111"000100xxchildren[1].givenName的长度=50101001101110101011100110110000101101110children[1].givenName="Susan"01000010children[l].initial="B"www.17bzw.c000100xxchildren[1].familyName的长度=50100101001101111011011100110010101110011children仁1].familyName-"Jones"00011001010110010000011100010111children巨1].dateOfBirth="19590717A.2.4本记录值的UNALIGNEDPER表示上面给出的记录值的表示(在应用本部分定义的紧缩编码规则的UNALIGNED变体之后)如下所示。编码以十六进制示出,后面是以二进制示出的编码的注释描述。注意填充位没有出现在UNA-LIGNED变体中,而字符也尽可能用最少的位数编码。编码的长度是61个八位位组,而相同的使用PER的ALIGNED变体编码的个人记录值为74个八位位组,限定长度形式的BER至少为136个八位位组,不定长度形式的BER至少为161个八位位组A.2.4.1十六进制视图www.17jzw.ne865D51D2888A5125F180998444D3CB2E3E9BF90CB8848B867396E8A88A5125F133www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2,200281089B93D71AA2294497C632AE222222985CE521885D54C170CAC838B8A.2.4.2二进制视图为使数据的二进制视图更容易读懂,用空行将逻辑上的一组字段分在一起(典型情况为长度/值对);用换行分割字段;用空格分割字符串内的字符;点(.)用来标记八位位组边界;`x’表示对八位位组边界填充最后一个八位位组所用的。位。位图位一1表示存在”children"000011name.givenName的长度=40.01011101.01010001.1101001namegivenName="John"0.10001name.initial一”P.,000.100namefamilyName的长度=501010.01010001.00100101.11110001.1name.familyName-"Smith"0000000.(employee)number的长度=10011001.(employee)number=510000100.0title的长度=81000100.11010011.11001011.00101110.00111110.10011011.11111001.0title="Director"0001100.10111000.10000100.10001011.1dateOfHire="19710917"000011nameOfSpouse.givenName的长度=40.01110011.10010110.1110100nameOfSpouse.givenName="Mary"0.10101nameOfSpouse.initial="T"000.100nameOfSpouse.familyName的长度=501010.01010001.00100101.11110001.nameOfSpouse.familyName-"Smith"0000001.0children的个数000100childrengivenName的长度=50.10011011.10010011.11010111.00011childrengivenName="Ralph"010.101children[O].initial="T"00010.0children[0].familyName的长度=50101001.01000100.10010111.1100011children[0].familyName="Smithv" GB/T16263.2-2006/ISO/IEC8825-2:20020.00110010.10101110.00100010.0010001children[0].dataOfBirth="19571111"0.00100children[l].givenName的长度=5010.10011000.01011100.11100101.001children[1].givenName="Susan"00001.1childrenFl].initial="B"000100children[I口.familyName的长度=50.01011101.01010100.11000001.01110children[1口.familyName="Jones"000.11001010.11001000.00111000.10111xxxchildren[1习.dateOfBirth="19590717"A.3使用扩展标记的记录A.3.1记录结构的ASN.1描述假定个人记录的结构使用GB/T16262.1-2006中规定的ASN.1形式地描述类型定义如下PersonnelRecord::=[APPLICATION0]IMPLICITSET{nameName,title[0]VisibleString,numberEmployeeNumber,www.17jzw.codateOMire[1]Date,nameOfSpouse[2口Name,children[3]IMPLICIT,SEQUENCE(SIZE(2,⋯))OFChildInformationOPTIONAL,}ChildInformation::=SET{nameName,dateOfBirth[0口Date,sex[1]IMPLICITENUMERATED{male(1),female(2),www.17bzw.cunknown(3)}OPTIONAL}Name::=[APPLICATION1]IMPLICITSEQUENCE{givenNameNameString,initialNameString(SIZE(l)),familyNameNameString,}EmployeeNumber::=[APPLICATION2口IMPLICITINTEGER(0二9999,⋯Date::=[APPLICATION3]IMPLICITVisibleString(FROM("0”二”9")-SIZE(8,⋯9二20))--YYYYM一MDDwww.17jzw.neNameString::=VisibleString(FROM("a"二”z"一”A"二”Z”一”-SUE肠www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002A.3.2记录值的ASN.1描述JohnSmith的个人记录值使用ASN.1形式地描述如下。{name{givenName"John",initialIT",familyName"Smith"},title"Director",number51,dateOfHire"19710917",nameOfSpouse{givenName"Mary",initial"T",familyName"Smith"},children{{name{givenName"Ralph",initial"T",familyName"Smith"),dateOfBirth"19571111"},{name{givenName"Susan",initial"B",familyName"Jones"),dateOfBirth"19590717",sexfemale}}}A.3.3本记录值的ALIGNEDPER表示上面给出的记录值的表示(在应用本部分定义的紧缩编码规则的ALIGNED变体之后)如下所示。编码以十六进制示出,后面是以二进制示出的编码的注释描述启在二进制显示中,`x"用来表示编码为0位的填充位,它们用来对齐字段。该编码的长度是83个八位位组。而相同的用PER的UNALIGNED变体编码的个人记录值为65个八位位组,限定长度形式的BER至少为139个八位位组,不定长度形式的BER至少为164个八位位组。A.3.3.1十六进制视图40004A6F686E5008536D697468000033084469726563746F720019710917034D6172795408536D697468010052616C70685408536D69746800195711118200537573616E42084A6F6E65730019590717010140A.3.3.2二进制视图为使数据的二进制视图更容易读懂,用空行将逻辑上的一组字段分在一起(典型情况为长度/值对);用换行分割字段;用空格分割字符串内的字符;`x"表示一个。填充位,它有时用来为填充八位位组边界而对齐字段。在个人记录中不存在扩展值位图位一1表示存在”children"在’,name”中不存在扩展值0长度在扩展根范围内0000Uxxxxxxname.givenName的长度=401001010011011110110100001101110name.givenName="John"01010000name.initial="P"0长度在扩展根范围内000100xname.familyName的长度二50101001101101101011010010111010001101000name.familyName="Smith"36 GB/T16263.2-2006/ISO/IEC8825-2:2002Oxxxxxxx长度在扩展根范围内0000000000110011(employee)number-5100001000title的长度=80100010001101001011100100110010101100011011101000110111101110010title二”Director"Oxxxxxxx长度在扩展根范围内00011001011100010000100100010111dateOfHire="19710917"在nameOfSpouse中不存在扩展值0长度在扩展根范围内000011nameOfSpouse.givenName的长度=401001101011000010111001001111001nameOfSpouse.givenName-"Mary"01010100nameOfSpouse.initial="T"0长度在扩展根范围内www.17jzw.co01xnameOfSpouse.familyName的长度=50101001101101101011010010111010001101000nameOfSpouse.familyName="Smith"children的个数在扩展根范围内在children[O]中不存在扩展值在children[O],name中不存在扩展值0长度在扩展根范围内000100xxxxxxchildren[O].givenName的长度=5www.17bzw.c0101001001100001011011000111000001101000children[O].givenName="Ralph"01010100children[O].initial="T"0长度在扩展根范围内01xchildren[O],familyName的长度=50101001101101101011010010111010001101000children[0].familyName="Smith"Oxxxxxxx长度在扩展根范围内00011001010101110001000100010001children[O].dataOfBirth="19571111"www.17jzw.ne在children[1」中存在扩展值37www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2;2002在children[l].name中不存在扩展值0长度在扩展根范围内00010Oxxxxxxxchildren[1].givenName的长度=50101001101110101011100110110000101101110children[l].givenName二”Susan"01000010children「l].initial="B"0长度在扩展根范围内019xchildren[l].famil州ame的长度=50100101001101111011011100110010101110011children[l].familyName="Jones"Oxxxxxxx长度在扩展根范围内00011001010110010000011100010111children巨1].dateOfBirth="19590717"0000000children[1]扩展附加物位图的长度=1表示存在sex的扩展值00000001sex完整编码的长度Olxxxxxxsex=famale的完整编码A.3.4本记录值的UNALIGNEDPER表示上面给出的记录值的表示(在应用本部分定义的紧缩编码规则的UNA工一IGNED变体之后)如下所示。编码以十六进制示出,后面是以二进制示出的编码的注释描述。注意填充位没有出现在UNA-LIGNED变体中,字符尽可能用最少位数编码。编码的长度是65个八位位组,而相同的使用PER的A工一工GNED变体编码的个人记录值为83个八位位组,限定长度形式的PER至少为139个八位位组,不定长度形式的BER至少为164个八位位组。A.3.4.1十六进制视图40CBAA3A5108A5125FI80330889A7965C7D37F20CB884813819CESBA2A114A24BE30113727AE35422944970619571111822985CE521842EAA603832132OE2EO20280A.3.4.2二进制视图为使数据的二进制视图更容易读懂,用空行将逻辑上的一组字段分在一起(典型情况为长度/值对);用换行分割字段;用空格分割字符串内的字符;点(.)用来标记八位位组边界;}X’表示对八位位组边界填充最后一个八位位组所用的。位在个人记录中不存在扩展值位图位一1表示存在”children"0在”name”中不存在扩展值0长度在扩展根范围内0000.11name.givenName的长度二4001011.10101010.00111010.01name.givenName="John"38 GB/T16263.2-2006八SO/IEC8825-2:2002010001name.initial="P"0长度在扩展根范围内000100name.familyName的长度=50.10100101.00010010.01011111.00011name.familyName="Smith"0长度在扩展根范围内00.00000011.0011(employee)number=511000title的长度=810011010.01111001.0110010111000111.11010001111111.0010title-"Director"0长度在扩展根范围内000.11001011.10001000.01001000.10111dateOfHire="19710917"在nameOfSpouse中不存在扩展值0长度在扩展根范围内www.17jzw.co0.00011nameOfSpouse.givenName的长度二4001.11001110.01011011.10100nameOfSpouse.givenName="Mary"010.101nameOfSpouse.initial="T"0长度在扩展根范围内0001.00nameOfSpouse.familyName的长度=5010100.10100010.01001011.11100011nameOfSpouse.familyName="Smith"children的个数在扩展根范围内www.17bzw.c在children[0口中不存在扩展值在children[0].name中不存在扩展值0长度在扩展根范围内0001.00children[0].givenName的长度二5010011.01110010.01111010.11100011children[0].givenName="Ralph"010101children[0].initial="T"0长度在扩展根范围内0.00100www.17jzw.nechildren[0].familyName的长度=5www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002010.10010100.01001001.01111100.011children[0].familyName-"Smith"0长度在扩展根范围内0001_10010101.01110001.00010001.0001children[0].dataOfBirth="19571111在children[1]中存在扩展值在children[l].name中不存在扩展值0长度在扩展根范围内0.00100children[I].givenName的长度=5010.10011000.01011100.11100101.001children[1].givenName="Susan"00001.1children[l].initial="B"0长度在扩展根范围内000100children仁1].familyName的长度二5.00101110.10101010.01100000.101110children[1].familyName="Jones"0长度在扩展根范围内0.00110010.10110010.00001110.0010111children[l].dateOfBirth="19590717"0.000000children[1]扩展附加物位图的长度=11表示存在sex的扩展值0000001sex完整编码的长度lxxxxxxsex=famale的完整编码填充位创建完整的个人记录编码A.4使用扩展附加组的记录A.4.1记录结构的ASN.1描述假定客户记录的结构使用GB/T16262.1-2006中规定的ASN.1形式地描述类型定义如下,假设AUTOMATICTAGS:Ax::=SEQUENCE;aINTEGER(250二253),bBOOLEAN,cCHOICE{dINTEGER,一‘〔BOOLEAN,IA5String]〕 GB/T16263.2-2006/ISO/IEC8825-2:2002C’CgNnmbericString(SIZE(3)),hBOOLEANOPTIONAL]]BMPStringOPTIONAL,PrintableStringOPTIONALA.4.2记录值的ASN.1描述Ax的值使用ASN.1形式地描述如下:{a253,bTRUE,ce:TRUE,g"123",hTRUE}A.4.3本记录值的ALIGNEDPER表示上面给出的记录值的表示(在应用本部分定义的紧缩编码规则的ALIGNED变体之后)如下所示。编码以十六进制示出,后面是以二进制示出的编码的注释描述。在二进制显示中,`x’用来表示编码为。的填充位,它们用来对齐字段。该编码的长度是8个八位位组。而相同的使用PER的UNALIGNED变体编码的个人记录值为8www.17jzw.co个八位位组,限定长度形式的BER至少为22个八位位组,不定长度形式的BER至少为26个八位位组。A.4.3.1十六进制视图9E000180010291A4A.4.3.2二进制视图为使数据的二进制视图更容易读懂,用空行将逻辑上的一组字段分在一起(典型情况为长度/值对);用换行分割字段;用空格分割字符串内的字符;`x"表示一个。填充位,它有时用来为填充八位位组边界而对齐字段。在Ax中存在扩展附加值www.17bzw.c位图位=0表示不存在可选字段(i和7)a=253h=TRUEc的选择项的值为一个扩展附加值0000000xx选择索引选择c.e00000001c.e的长度lxxxxxxxc.e=TRUEwww.17jzw.ne0000000在Ax=1中定义的扩展附加部分的数目www.3x888.co GB/T16263.2-2006八SO/IEC8825-2:2002存在第1个扩展附加部分00000010扩展附加部分编码的长度=2位图=1表示h存在001000110100g=123lxxh二TRUEA.4.4本记录值的UNALIGNEDPER表示上面给出的记录值的表示(在应用本部分定义的紧缩编码规则的UNALIGNED变体之后)如下所示。编码以十六进制示出,后面是以二进制示出的编码的注释描述。注意,除了在最外层值的编码的末尾之外,填充位没有出现在UNALIGNED变体中—因此它隐含在开放类型载有的值的末尾。该编码的长度是8个八位位组,而相同的用PER的ALIGNED变体编码的个人记录值为8个八位位组,限定长度形式的BER至少为22个八位位组,不定长度形式的BER至少为26个八位位组。A.4.4.1十六进制视图9E000600040A4690A.4.4.2二进制视图为使数据的二进制视图更容易读懂,用空行将逻辑上的一组字段分在一起(典型情况为长度/值对);用换行分割字段;用空格分割字符串内的字符;点(.)用来标记八位位组边界;`x"用来表示为八位位组边界而填充最后一个八位位组所用的。位。在Ax中存在扩展附加值位图位=0表示不存在可选字段(i和])a=2536=TRUEc的选择项的值为一个扩展附加值0.000000选择索引选择c.e00.000001c.e的长度lx.xxxxxxc.e=TRUE00.00000在Ax=1中定义的扩展附加部分的数目存在第1个扩展附加部分00.000010扩展附加部分编码的长度=2位图=1表示h存在0.01000110.100g=123h=TRUEIx4x2xx GB/T16263.2-2006/ISO/IEC8825-2:2002附录B(资料性附录)组合PER可视约束和PER非可视约束B.1概述B.1.1PER可扩展性的正确决定因素是实现互工作的关键不同的实现形成值的相同决定因素也很重要,这些值被PER编码为根值,这些根值又为扩展类型而编码为扩展附加部分。B.1.2用户写出的东西通常是简单的,PER编码是直观的,但对复杂的结构来说,需要进一步讨论PER可视、PER可扩展性和集合运算之间的交互作用,这即是本章的内容。B.1.3由于有些约束被定义为PER不可视的(见9.3),那么,类型可能被GB/T16262.1-2006中的规则定义为可扩展的,但对PER编码来说,被认为是不可扩展的(带有涵盖所有可能的扩展的放松约束)。B.1.4在两种情况下类型被认为是可扩展的,PER编码的根值集合不总是与认为用GB/T16262.1-2006定义的根值的值集合相同。B.1.5对实际规范中出现的大多数情况,两种决定因素都是简单、易懂的。B.1.6然而,ASN.1在复杂约束的应用中提供了值得考虑的能力和普遍性,这些复杂约束是由于集合运算和/或简单或复杂约束的一系列应用而产生的。www.17jzw.coB.1.7用户的规范不大可能定义涉及本附录讨论的复杂性的ASN.1结构,但如果实际上应用了这样的约束,工具的实现者需要知道产生何种编码。B.1.8用于非常复杂的约束(可能涉及类型引用名)的规则不总是直观的,但这些规则已被设计成能简化工具的实现和ASN.1规范的复杂性。B.1.9对SEQUENCE,SET,CHOICE和ENUMERATED来说,如果含有扩展标记(省略号“⋯”),那么即使被约束(见9.3.20),类型也总是可扩展的。当且仅当一个值在省略号后不包括任何元素(或CHOICE中的选项及ENUMERATED中的枚举),该值就是根值。一个非可扩展的SEQUENCE,SET,CHOICE或ENUMERATED可以是可扩展约束适用的双亲类型,由此产生一个可扩展的序列、集合、值选择或枚举类型。然而,这些类型上的约束从不是PER可视的,且导致按PER的类型编码没有可扩展位。这些类型在本附录中不做进一步讨论,它仅与在整数和受限的已知倍数字符串类型上使用可扩展的约束而引起的可扩展性有关。(在其他类型上的约束不影响PER编码,除非在八位位组串和位串类www.17bzw.c型上的长度约束,它们类似于在字符串类型上的长度约束,这里不做进一步考虑)B.1.10规范文本中规定了精度规则,但本指导附录旨在理解这些规则时帮助工具的厂商。B.1.11为简化说明,非可扩展类型或约束中的值集合作为根值描述如下,尽管该术语只严格地适用于扩展类型或约束。B.1.12当所有约束是如本部分所规定的PER可视的,则GB/T16262.1-2006的G.4提供了关于约束组合方面的指导信息,宜与本附录结合起来阅读。当涉及的约束不是PER可视的,或约束适用于字符串类型时,则该规则需要进一步补充。这些补充的规则涵盖在B.2中。B.2PER中约束的可扩展性和可视性B.2.1概述B.2.1.1在BER中,对于根值和扩展附加部分,值的编码是一样的,所以可扩展性对该编码没有什么www.17jzw.ne影响在PER中,若抽象值处于(通常但不是必须,是有限的)根值集合中,那么,一般用有效方式编码43www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002这些抽象值,若抽象值是扩展附加的,则该编码的效率较低。B.2.1.2然而,对于许多PER编码,在被PER编码的类型(被GB/T16262.1-2006确定)的扩展附加部分中的值就好像这些值是根值,而不是扩展附加部分的值那样进行编码。这些值的精确标识是通过注释某些约束都是“非PER可视的”来进行的。B.2.1.3在本部分中引人PER可视的概念是为了使编码者在试图确定要被编码的值是否处于可扩展类型的根中时,减轻其任务。对编码者来说,难于用有效方式处理的约束被定义为对PER编码(对其没有影响)是“不可视”的。B.2.1.4有一个例外,简单约束的可视性仅依赖要被约束的类型和/或与可扩展性无关的约束方面。例如,约束仅在正文上依赖表约束?约束是可变的吗(在正文上依赖抽象语法参数的约束)?B.2.1.5若一个约束是可变的,或是在正文上依赖表约束,则不管它适用什么类型,它决不是PER可视的。B.2.1.6此外,除非约束适用于整数型或已知倍数的受限字符串类型(或对位串、八位位组串上长度约束),否则约束决不是PER可视的。B.2.1.7其例外是对已知倍数受限字符串类型上的允许字母表约束。该约束是PER可视的,当且仅当它不是可扩展的。B.2.1.8在字符串类型上注释单个值子类型约束不是PER可视的也很重要。B.2.1.9在PER中,对字符串类型的约束有两个独立方面:对串长度的约束和对允许字母表的约束。前一种约束在编码中影响长度字段的存在和形式,第二种约束影响用来编码每个字符的位数。在简单应用中,很明显,约束规定了或者这个,或者那个。因此,Al::=VisibleString(SIZE(20))一长度约束A2::=VisibleString(FROM("A"."F"))一允许的字母表约束A3::=VisibleString(SIZE(2))(FROM("A",二”F"))一长度约束和允许字母表约束B.2.1.10但应考虑:B::=VisibleString(SIZE(20)INTERSECTIONFROM("A",二”F")UNIONSIZE(3)INTERSECTIONFROM("F",二”K"))B.2.1.11为规定带有这种复杂约束的类型的编码,PER引人了一个有效长度约束的概念,和一个有般允许字母表约束的概念。这些是允许所有抽象值处于实际约束的根中的约束,但通常允许某些附加的抽象值。在上面的示例中,有效长度约束为3..20,有效允许字母表约束是FROM("A"二”K"),B.2.1.12为处理可扩展性,本部分引入了可以扩展的有效长度约束和有效允许字母表约束(后者是PER不可视的,并且在确定编码时被忽略)任一或两者的进一步的概念,并且有必要考虑可扩展允许字母表约束的(非)PER可视对类型方面的有效约束的影响。B.2.1.13下列各条说明的主要方面是:PER可视的效果以及关于约束的系列应用和对集合运算的有效性约束的计算。B.2.2约束的PER可视性B.2.2.1B.2.2.10描述了一个完整的(复杂的)PER约束何时是PER可视的,何时不是。然而首先我们简单地考虑约束的系列应用,哪一个(或作为一个整体)是PER可视的,哪一个不是。B.2.2.2规则很简单:如果在约束的系列应用中的一个完整约束不是PER可视的,那么,对于PER编码,简单地全部忽略该约束。注:当为定义PER编码去掉非可视的约束时,不隐含着这些应用能合法地发送附加抽象值原有的约束仍适用于能发送的值,尽管编码器可通常使用PER可视约束来执行检验和发布诊断。44 GB/T16263.2-2006/ISO/IEC8825-2;2002B.2.2.3重要的是要意识到在复杂情况中去掉非可视约束会有相当显著的效果,在去掉系列应用的不可视的PER约束之后考虑可扩展性(以及什么是根值)也总是重要的。(若没有任何系列应用的约束是PER可视的,那么该类型对PER编码是不受约束的,并是不可扩展的)B.2.2.4按照GB/T16262.1-2006的可扩展类型对PER可能是不可扩展的B.2.2.5即使效果不是那么明显,按照GB/T16262.1-2006的扩展附加部分的值也可能是某些约束被去掉时的根值的一部分,因此在PER中这些值可编码为根值,而不是编码为扩展附加部分注这意味着PER编码可能比理论上的更冗长,但仍然是要编码的该类型中的所有抽象值使用的唯一编码。B.2.2.6三个主要因素影响系列应用的复杂约束的可视性。B.2.2.7第1个要考虑的因素是该约束是可变约束(在文本上依赖于抽象语法的参数),还是在文本上依赖的表约束。在这种情况下,系列应用的整个约束不是PER可视的,并且整个约束要被丢弃B.2.2.8第2个要考虑的因素是只对字符串适用的约束。在这些类型上的单个值子类型约束不是PER可视的,但如果在该约束中存在集合运算,那么,单个值子类型约束的存在不必形成系列应用不可视的完整约束。B.2.2.9确定这种情况的PER可视的规则在9.3.19中规定,也在那里加以概述。设“V”表示PER可视的,..I;表示非可视的(不可视)。B.2.2.10因为UNION和INTERSECTION都是可交换的,那么只对第1种情况V给出结果的规则。(若所有成分都是V,则应用GB/T16262.1-2006的正常规则,这里不做进一步讨论。所有成分都是I的情况总是给出I,也不再列出。)规则是:VUNIONI=>Iwww.17jzw.coVINTERSECTIONI=>V一导出的V恰好是交集部分的VVEXCEPTV=>I一导出的V恰好是不带差集的VIEXCEPTV=>IV,,I=>II,⋯,V二>IB.2.2.11用这种方式去掉单个值子类型约束(及EXCEPT)有一个重要结果。这意味着适用于字符串类型的所有“原子”约束既是单纯的长度约束,也是单纯的允许字母表约束总约束(只)任意复杂地由使用这种“原子”单元的交集、并集和扩展附加部分构成。B.2.2.12这明显简化了PER引用对字符串类型的“有效约束”的计算。www.17bzw.cnB.2.2.13第3种主要因素是允许字母表约束是否是可扩展的。这些约束不是PER可视的,不过,当它们的存在不影响任何可能存在的长度约束时,对其的处理不同于上述所列的那些。该领域将在B.2.3中讨论。B.2.3有效的约束B.2.3.1对已知倍数字符串类型的每个约束针对一对有效的约束进行评价:一个有效的允许字母表约束和一个有效的长度约束。其中的每一个或两者可能是可扩展的,也可能是空(无有效约束)的。B.2.3.2在系列应用中,由于GB/T16262.1-2006中的规则,只有最后的约束拥有许多可以扩展的对。B.2.3.3有效的长度约束和有效的允许字母表约束的定义在3.6.8和3.6.9中给出,这里不再重复,但实际上要按B.2.2.9和B.2.2.10中的规定,将定义应用于带有被去掉的“不可视”约束的类型。www.17jzw.neB.2.3.4随着去掉非PER可视的约束,用系列应用有效长度约束和有效允许字母表约束替换实际约束将增加用于PER编码的新抽象值(现在包括的带有有效长度约束长度的任何值,并且该值仅使用有45www.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002效的允许字母表约束)。然而,这些值将不再通过一致的应用来发送,并且其效果是再一次简单地使PER编码比理论上所能达到的效率还要低。B.2.3.5示例A::=VisibleString(SIZE(10)INTERSECTIONFROM("A")UNIONSIZE(20)INTERSECTIONFROM("B"))只有2个值,所以1位的编码只是理论上可能,但PER编码使用有效的约束并能在下列内容中编码总数为一百万(大约)个值:B::=VisibleString(SIZE(10UNION20)INTERSECTIONFROM("AB"))B.2.3.6对2个值集合的并集的有效约束总是对每个值集合的有效约束的并集,但通常情况下(若所有约束都是PER可视的),这一简单规则可能不适用交集。B.2.3.7然而这里重要的是去掉单个值子类型约束和EXCEPT条款。当所有“原子”约束是单纯的长度约束或单纯的允许字母表约束(可能扩展)时,有效的约束可以用简单的方式对任意集合运算(无EX-CEPT条款)进行计算。B.2.3.8设{S,A}表示被与允许字母表约束A一起串行使用的长度约束S所允许的所有值的集合。(还要注意,交集和并集是可交换的。)则有:{S1,Al}INTERSECTION{S2,A2)=>{S1INTERSECTIONS2,AlINTERSECTIONA2}{S1,Al}UNION{S2,A2}=>{S1UNIONS2,AlUNIONA2};S1,Al},⋯=>{S1,⋯}B.2.3.9后一种情况需要做些解释。一个可扩展的允许字母表约束对编码没有影响,因为PER不支持根值所需的不同位数的字符,也不支持扩展附加值所需的不同位数的字符。因此,如果一(有效的)允许字母表约束是可扩展的,它就不再是一个约束—所有字符都有能力表示。后一种情况中的“⋯”的效果是使允许的字母表和长度可扩展,但只有可扩展的长度仍然保持为一个约束。在规范正文中,表示可扩展的有效允许字母表约束不是PER可视的。B.3示例本章包含提供进一步说明的若干示例。A::=INTEGER(MIN二MAX,,.。,1二10)--A是可扩展的,但根不受约束,并且可扩展位总是置为a,A1::=INTEGER(1二32,⋯,33..128)--Al是可扩展的,并且在根的工一32中包含值1^-128,值33-128作为扩展附加部分。A2::=INTEGER(1.32,⋯,33.128)(1二128)一这是非法的,因为128不在双亲的根中。(见GB/T16261.1的第46章)。A3::=INTEGER((1二32,⋯,33..128)-(1..128))一这是合法的,A3是可扩展的,包含根中的1^-32,并且33一128作为扩展部分。A4::=INTEGER(1.。32)(MIN.63)--MIN为1,并且63是不合法的A5::=INTEGER((1..32)"(MIN..63))一这是合法的,MIN是负的无限数,A3包含1--320 GB/T16263.2-2006/ISO/IEC8825-2;2002A6::=INTEGER((1..64,⋯,B)-(1二32))一A6总是(仅)包含值1_32,而不管B值包含的是什么,但它不过是形式上可扩展,并且PER将编码所一有5位中的值,其扩展位(总是)置为。。A7::=INTEGER(1二32,⋯,B)(1二256)一A7是非法的,作为(1..256)的双亲,它不再包含比1-32多,而不管B包含什么。A8::=IA5String(SIZE(3..4)一SIZE(9..10))--A8具有长度(3..419..10)的有效长度约束,--PER将使用3位来编码长度字段,就好像它有SIZE(3..10)那样A9::=IA5String(FROM("AB")"SIZE(1二2)FROMC"DE")一SIZE(3){FROM("AXE")一(SIZE(1..5))--A9具有有效长度约束SIZE(1..5),PER将用3位来编码长度。-A9还具有有效字母表约束FROM("ABDEX"),PER将用3位编码每一个字母。A10::=IA5String(SIZE(1二4)!SIZE(5..10)-FROMC"ABCD")}SIZE(6..10))--A10具有有效长度约束SIZE(1..10),但允许的字母由整个IA5String字母组成All::=IA5String(SIZE(1二10)}FROM("A",二”D"))一没有长度约束,字母表是整个IA5String字母表。A12::=IA5String(SIZE(1二10)-FROM("A",二”D"),⋯)www.17jzw.co--A12具有可扩展的有效长度约束SIZE(1..10,...),字母表是整个IA5String字母表。A13::=IA5String(SIZE(1二10,⋯)一FROM("A",二”D"))--A13具有可扩展的有效长度约束SIZE(L.10,...),有效字母表约束是FROM("A".“D")eA14::=IA5String(SIZE(1二10,⋯,29))(FROM("A",二”D"))一有效长度约束SIZE(1..10),由于FROM的系列应用,不可扩展。一有效字母表约束是FROM("A".."D")A15::=IA5String(SIZE(1二10,⋯)}FROM("A",二”D"),⋯)一从MIN至MAX的可扩展的有效长度约束,带有根中的所有值,一可扩展位的编码总是置为。,字母表是整个IA5String字母表。A16::=IA5String(FROM("A",二”D")·SIZE(1二10),⋯)www.17bzw.cn一有效长度约束SIZE(1..10),可以扩展。一字母表是整个IA5String字母表A17::=IA5String(FROM("A",二”D"),二,)(SIZE(1二10))一有效字母表约束FROM("A二“D"),由于SIZE的系列应用,不可扩展。一有效长度约束是SIZE(L.10),www.17jzw.newww.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002附录C(资料性附录)对PER算法的支持应用(程序)标准、或者国际标准化轮廓,可能规定在协商中哪种紧缩编码规则要被支持,以及相应的传送语法要被提供或者被接受。当要求使用EMBEDDEDPDVs(或EXTERNALS)或CHARACTERSTRING中的中继安全(safe)和/或正则编码时,宜明确声明下列文本提供的指南可用于规范文本产生式。C.1正则编码打算用在当安全特性(security)适用于编码时。当被编码的值包括单一集合类型时,使用CANONICALPER可能涉及重大额外的CPU利用成本,因此,一般不推荐使用,除非要求安全特性。C.2当抽象语法值含有嵌人内容,并且该嵌入内容使用不同于与该抽象语法值相关联的传送或抽象语法进行编码时,强烈推荐嵌人内容用中继安全的方式进行编码。如果安全特性很重要,则要求正则编码规则。在本上下文中,宜特别注意用于类型BMPString或UniversalString的GB13000.1的级别,只有GB13000.1的1级实现被保证是正则的。C.3强烈建议支持任何PERALIGNED变体传送语法的所有实现支持解码BASIC-PERALIGNED变体解码(因此也支持CANONICAL-PERALIGNED变体)。UNALIGNED变体情况类似。C.4从互工作利益的角度出发,建议PER的所有实现支持A工一IGNED变体和UNALIGNED变体(增加的实现复杂性很小)。在通信实例中提供哪一个(1个或者2个)是本地管理事项,如果两者都提供则接受哪一个也是本地管理事项。如果只提供一个,则它也应该被接受。C.5接受这些建议对一般工具厂商尤其重要。当某个实现是特定于某些特定应用时,支持单个PER传送语法(可能被该应用的设计者指定)也完全可以接受。 GB/T16263.2-2006/ISO/IEC8825-2:2002附录D(资料性附录)对可扩展ASN.1规则的支持D.1这些紧缩编码规则依赖于其所使用类型的总体定义。通常,如果对类型定义做了不同于那些纯语义特性的任何改变,那么,使用本规范部分的所有值的编码都将受到影响。特别是,对于序列可选成分的增加、将成分转换成该成分的CHOICE或者其他类型、或者对某个成分约束的放松或加紧都可能改变该类型值的编码。D.2但是,这些编码规则已设计成能保证满足类型扩展ASN.1模型(见GB/T16262.1-2006)中规定的对编码规则的要求。D.3当类型不是扩展序列的一部分(不存在扩展标记)时,本附录前面的文本适用:PER不为该类型的扩展性提供支持。当序列或集合类型有扩展标记,但没有扩展附加部分时,与类型相同但不带扩展标记的类型相比,会多出1位的开销(由于在ALIGNED变体中的填充,可变成一个八位位组)当类型中存在扩展附加部分,而且在通信实例中被实际发送时,与去掉扩展标记的相同类型相比,多出大约一个八位位组的进一步开销,加上为发送的每个扩展附加部分用的一个附加长度字段。D.4重要的是注释扩展标记的增加和去掉都将改变线上的位,而且通常要求改变协议的版本号。D.5在一个信息客体集中包含扩展标记、或者增加和去掉异常规范都不改变编码但是,这些当然可www.17jzw.co能表示在要求实现行为方面的一些变化,并且仍然要求改变协议的版本号。www.17bzw.cwww.17jzw.newww.3x888.co GB/T16263.2-2006/ISO/IEC8825-2:2002附录E(资料性附录)关于PER编码拼接的指导附录E.1在已知编码规则和编码类型的情况下,PER编码是自定界的。ALIGNED和UNALIGNED变体的完整编码总是8位的整数倍。E.2为了在OSI表示层协议中载有PER编码,可以在八位位组串选项中拼接ALIGNED和UNA-LIGNED变体的编码。 GB/T16263.2-2006/ISO/IEC8825-2:2002附录F(资料性附录)客体标识符值的赋值在本部分中,下列客体标识符值和客体描述值被赋值:对于BASIC-PER,ALIGNED变体:{joint-iso-itu-tasnl(1)packed-encoding(3)basic(0)aligned(0))"PackedencodingofasingleASN.1type(basicaligned)”对于BASIC-PER,UNALIGNED变体:{joint-iso-itu-tasnl(1)packed-encoding(3)basic(0)unaligned(1)}"PackedencodingofasingleASN.1type(basicunaligned)”对于CANONICAL-PER,ALIGNED变体:{joint-iso-itu-tasnl(1)packed-encoding(3)canonical(1)aligned(0))"PackedencodingofasingleASN.1type(canonicalaligned)”对于CANONICAI,PER,UNALIGNED变体:{joint-iso-itu-tasnI(1)packed-encoding(3)canonical(1)unaligned(1)}www.17jzw.co"PackedencodingofasingleASN.1type(canonicalunaligned)”www.17bzw.cwww.17jzw.ne标准资料收藏家www.17bzw.cn易启标准网免费提供十万标准书籍资料下载会打字、5分钟快速自助建网站www.17jzw.com易启建站网免费提供建站平台,商业网站1年仅6www.3x888.co'