信息技術 ASN.1編碼規則 第2部分:緊縮編碼規則 (PER) 規范_第1頁
信息技術 ASN.1編碼規則 第2部分:緊縮編碼規則 (PER) 規范_第2頁
信息技術 ASN.1編碼規則 第2部分:緊縮編碼規則 (PER) 規范_第3頁
信息技術 ASN.1編碼規則 第2部分:緊縮編碼規則 (PER) 規范_第4頁
信息技術 ASN.1編碼規則 第2部分:緊縮編碼規則 (PER) 規范_第5頁
已閱讀5頁,還剩142頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1GB/T16263.2—XXXX/ISO/IEC8825-2:2021信息技術ASN.1編碼規則第2部分:緊縮編碼規則(PER)規范本文件規定了緊縮編碼規則集合,它們可以用來為ISO/IEC8824-1中定義的類型值派生傳送語法。這些緊縮編碼規則也適用于解碼這樣的傳送語法,以便標識出被傳送的數據值。本文件規定的編碼規則:——在通信時使用;——在選擇編碼規則時主要關心值的最小化表示規模的場合中使用;——對在GB/T16263.1中描述的所有擴展形式,在保留現有值的編碼時,允許通過增加額外值進行抽象語法的擴展;——可以根據ISO/IEC8825-6進行修改。2規范性引用文件下列文件中的內容通過文中的規范性引用而構成本文件必不可少的條款。其中,注日期的引用文件,僅該日期對應的版本適用于本文件;不注日期的引用文件,其最新版本(包括所有的修改單)適用于本文件。注:本文件基于GB/T13000-2010。不能在該標準的更高版本上使用。上述引用應解釋為對已確定的標準及其所有GB/T2311—2000信息技術字符代碼結構和擴充技術(ISO/IEC2022:1994,IDT)GB13000—2010信息技術通用多八位編碼字符集(UCS)(ISO/IEC10646:2003,IDT)GB/T16262.1—AAAA8824-1:2021,IDT)GB/T16262.2—BBBB8824-2:2021,IDT)GB/T16262.3—CCCC3:2021,IDT)GB/T16262.4—DDDD8824-4:2021,IDT)GB/T16263.1—EEEE信息技術抽象語法記法一(ASN.1)第1部分:基本記法規范(ISO/IEC信息技術抽象語法記法一(ASN.1)第2部分:信息客體規范(ISO/IEC信息技術抽象語法記法一(ASN.1)第3部分:約束規范(ISO/IEC8824-信息技術抽象語法記法一(ASN.1)第4部分:ASN.1規范的參數化(ISO/IEC信息技術ASN.1編碼規則第1部分:基本編碼規則(BER)、正則編碼規則(CER)和非典型編碼規則(DER)的規范(ISO/IEC8825-1:2021,IDT)SJ/Z9047—1987信息處理信息交換用字符串形式表示數值的方法(ISO6093:1985,IDT)ISO/IEC646:1991信息技術信息交換用ISO七位編碼字符集(Informationtechnology–ISO7-bitcodedcharactersetforinformationinterchange)ISO/IEC2375:2003信息技術轉義序列和編碼字符集的登記規程(Informationtechnology–Procedureforregistrationofescapesequencesandcodedcharactersets)ISO/IEC8825-6:2021信息技術ASN.l編碼規則第6部分:PER編碼指令的注冊和應用(Informationtechnology—ASN.lencodingrules:RegistrationandapplicationofPERencodinginstructions)2GB/T16263.2—XXXX/ISO/IEC8825-2:2021XXISO結合轉義序列使用的編碼字符集的國際登記簿3術語和定義下列術語和定義適用于本文件。3.1基本記法規范GB/T16262.1界定的所有術語和定義適用于本文件。3.2信息客體規范GB/T16262.2界定的所有術語和定義適用于本文件。3.3約束規范GB/T16262.3界定的下列術語和定義適用于本文件:a)組件關系約束(componentrelationconstraint);b)表約束(tableconstraint)。3.4ASN.1規范的參數化GB/T16262.4界定的下列術語和定義適用于本文件:可變約束(variableconstraint)3.5基本編碼規則GB/T16263.1界定的下列術語和定義適用于本文件:a)數據值(datavalue);b)動態符合性(dynamicconformance);c)(數據值的)編碼(encoding(ofadatavalue));d)接收器(receiver);e)發送器(sender);f)靜態符合性(staticconformance)。3.6PER編碼指令本文件使用ISO/IEC8825-6中定義的下列術語和定義:標識關鍵字(identifyingkeyword)。3.7附加定義下列術語和定義適用于本文件。3.7.12的補碼的二進制整數編碼2's-complement-binary-integerencoding把整個數編碼到指定長度的位字段(在ALIGNED變體中八位位組對齊)中,或者編碼到可接納該整個數編碼為2的補碼的整數的最小數目的八位位組中,該編碼按照11.4所規定的等于、大于或小于0的整個數提供表示。注1:2的補碼的二進制數的值通過計數內容八位位組中的位得出,計數從最后1個八位位組的位1開始作為位0,到3GB/T16263.2—XXXX/ISO/IEC8825-2:2021第1個八位位組的位8結束。每位賦予一個2的數值,這里N是該位在上面計數順序中的位置。2的補碼的二進制數的值利用下列方法得出,即累加計算那些置1的位的數值,但不包括第1個八位位組的位8,然后,若第1個八位位組的位8置為1,則這個累加值減去賦注2:整個數(wholenumber)是數學術語整數(integer)的同義詞。這里使用它是為了避免與ASN.1的類型整數3.7.2抽象語法值abstractsyntaxvalue要由PER編碼或由PER解碼生成的抽象語法值(定義為單個ASN.1類型值的集合)。3.7.3位字段bit-field編碼機制某一部分的產物,由有序的位集合構成,這些位不必是8的倍數。注:若該術語的使用后面緊跟“ALIGNED變體中八位位組對齊”,這意味著對PER的對齊變體來說,該位字段要求3.7.4正則編碼canonicalencoding通過應用無實現相關選項的編碼規則所得到的抽象語法值的完整編碼,這種規則導致在傳輸語法中無歧義且唯一的位串和抽象語法中的值之間一對一映射。3.7.5復合類型compositetype集合、序列、單一集合、單一序列、選擇、嵌入式pdv、外部或者不受限的字符串類型。3.7.6復合值compositevalue復合類型的值。3.7.7受約束的整個數constrainedwholenumber受PER可視約束所約束的整個數處于“lb”到“ub”的范圍內,“lb”的值小于或等于“ub”的值,且“lb”和“ub”的值是允許的值。注:受約束的整個數出現在編碼中,它標識以下內容:選定的選擇類型的替換項;長度已經被PER可視約束限制到最大長度的字符、八位位組和位串類型的長度;單一序列或單一集合類型中的組件數計數已經被PER可視約束限制為最大組件數的計數;已經被PER可視約束所約束的處于有限最小值和最大值范圍內的整數類型值;以及3.7.8有效長度約束(受約束字符串類型的)effectivesizeconstraint(foraconstrainedstringtype)4GB/T16263.2—XXXX/ISO/IEC8825-2:2021XX單個有限長度約束,它可適用于內置串類型,并且其效果是允許且只允許全部能被受約束的串類型表示的那些長度。而下面的串類型沒有有效長度約束,因為如果該串不包含除“a”、“b”和“c”外的任何字符,則它可以3.7.9有效允許字母約束(受約束的受限字符串類型的)effectivepermitted-alphabetconstraint(foraconstrainedrestrictedcharacterstringtype)單個允許字母表約束,它可以適用于內置已知倍數字符串類型,并且其效果是允許且只允許那些能夠出現在某個受約束的受限字符串類型的值中至少一個字符位置上的字符。Ax有一個有效允許字母表約束為“ABCD”,Bx有一個由整個IA5String字母表構成的有效允許字母表約束,3.7.10枚舉索引enumerationindex“EnumerationItem”按照枚舉值升序的方式進行排序來確定,枚舉索引從0開始賦值,0賦值給第1個“EnumerationItem”,1賦值給第2個,依此類推,直到排序表中的最后一個“EnumerationItem”。注:“RootEnumeration”中的“EnumerationItem”與“AdditionalEnumeration”中的“EnumerationItem”分3.7.11PER編碼的可擴展extensibleforPERencoding一種類型特性,需要PER把值的編碼標識為根值的編碼或擴展附加部分的編碼。3.7.12字段列表field-list位字段的有序集合,它是把這些編碼規則應用于抽象值產生的結果。3.7.13不定長度indefinite-length5GB/T16263.2—XXXX/ISO/IEC8825-2:2021其長度大于64K-l或者其最大長度不能由ASN.1記法確定的一種編碼。3.7.14固定長度類型fixed-lengthtype一種類型,該類型編碼的最外層長度決定因子的值可以由類型記法(僅在應用PER可視約束之后)來確定(使用本文件規定的機制),并且對于該類型的所有可能值而言,該值相同。3.7.15固定值fixedvalue一個值,它可以確定(用本文件規定的機制)支配它的類型的一個唯一允許值(僅在應用PER可視約束之后)。3.7.16已知倍數字符串類型known-multipliercharacterstringtype一種受限字符串類型,其中,對所有允許字符串值,編碼的八位位組數是字符串中的字符數的已NumericString、UniversalString和BMPString。3.7.17長度決定因子lengthdeterminant確定全部或者部分PER編碼長度的(位、八位位組、字符或組件的)計數。3.7.18正常小非負整個數normallysmallnon-negativewholenumber編碼的一部分,它表示一個無邊界非負整數的若干值,但是,小值比大值出現的可能性大。3.7.19正常小長度normallysmalllength長度編碼,它表示一個無邊界長度的若干值,但是,小長度比大長度出現的可能性大。3.7.20非負二進制整數編碼non-negative-binary-integer-encoding受約束或半受約束的整個數的編碼,該整個數可編碼到指定長度的位字段中、或編碼到指定長度的位字段(ALIGNED變體中的八位位組對齊)中、或者編碼到最小數目的八位位組中,該八位位組將容納非負二進制整數的整個數,而非負二進制整數為11.3規定的大于或等于0的整個數提供了表示。注:非負二進制數的值通過計數內容八位位組中的位得出,計數從最后一個八位位組的位1開始作為位0,到第1個八位位組的位8結束。每位賦予一個2的數值,這里N是該位在上面計數順序中的位置。非負二進制數的值為3.7.21最外層類型outermosttype一種ASN.1類型,其編碼被包含在一個非ASN.1載體中或作為其他ASN.1結構(見11.1.1)的值。6GB/T16263.2—XXXX/ISO/IEC8825-2:2021XX3.7.22PER可視約束PER-visibleconstraint影響值的PER編碼的ASN.1約束記法的使用實例。3.7.23中繼安全編碼relay-safeencoding抽象語法值的一種完整編碼,該編碼無需知道編碼執行環境就可以被解碼(包括任何嵌入式編碼)。3.7.24半受約束的整個數semi-constrainedwholenumber一種受PER可視約束所約束的整個數,以值“lb”作為允許值,約束超過或等于某個值“lb”,它是不受約束的整個數。注:半受約束的整個數出現在不受約束的(和某些受約束的情況下的)字符、八位位組和位串類型的長度編碼中,還出現在不受約束的(和某些受約束的情況下的)單一序列和單一集合類型的組件計數的編碼中,以及3.7.25簡單類型simpletype不是復合類型的類型。3.7.26文本依賴textuallydependent用來標識下列情況的一個術語,如果在計算一個元素集合時使用了某個引用名,則該元素集合的值被認為依賴于該引用名,而無論執行的實際集合算術運算結果是元素集合的最終值與賦值給該引用名的實際元素集合值是否有關。注:例如,下面的Foo的定義文本依賴于Bar,即使Bar對Foo的值集沒有影響(因此,根據10.3.6,在Foo上的約束不是PER可視的,因為Bar被一個表約束來約束的,而Foo在3.7.27不受約束的整個數unconstrainedwholenumber一種不受PER可視約束所約束的整個數。4縮略語下列縮略語適用于本文件:ASN.1抽象語法記法一7GB/T16263.2—XXXX/ISO/IEC8825-2:2021BERASN.1的基本編碼規則CERASN.1的正則編碼規則DERASN.1的非典型編碼規則PERASN.1的緊縮編碼規則1638432K3276848K4915264K6553655記法本文件引用GB/T16262.1定義的記法。6約定6.1本文件使用術語“最高有效位”和“最低有效位”來定義編碼中的每個八位位組的值。注:低層規范使用相同的記法來定義串行線上位傳輸的次序,或者將6.2對于本文件,八位位組的位從8~1編號,其中位8是“最高有效位”,位l是“最低有效位”。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,它產生正則編碼,這被定義為對BASIC-PER編碼中依賴于實現選擇的限制。注1:當鑒別器需要應用于抽象值時,則CANONICAL-PER產生具注2:任何與CANONICAL-PER編碼一致的實現都與BASIC-PER編碼一致。任何與BASIC-PER解碼一致的實現都與CANONICAL-PER解碼一致。因此,按照CANONICAL-PER形成的編碼也是BASIC-PER所7.6如果用BASIC-PER或CANONICAL-PER所編碼的類型含有EMBEDDEDPDV、CHARACTERSTRING或者EXTERNAL類型,則外層編碼不再是中繼安全的,除非所有EMBEDDEDPDV、CHARACTERSTRING和EXTERNAL類型所使用的傳送語法都是中繼安全的。如果用CANONICAL-PER所編碼的類型含有EMBEDDEDPDV、CHARACTERSTRING或EXTERNAL類型,則外層編碼不再是正則的,除非所有EMBEDDEDPDV、CHARACTERSTRING和EXTERNAL類型所使用的傳送語法都是正則的。注:支持{GB13000的1級(l)...}形式的所有字符抽象語法的字符傳送語法是正則的,支持{GB13000的2級(2)...}8GB/T16263.2—XXXX/ISO/IEC8825-2:2021XX和{GB13000的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表示協議中攜帶它們時,應使用帶有OCTETSTRING選擇項的“全編碼”(見GB/T15696.1定義)。7.10除非另有說明,本文件的規則適用于兩種算法和兩種變體(有例外,見9.2和9.3)。7.11附錄C是資料性附錄,它就實現PER的組合給出了建議,以使互工作的機會最大化。8符合性8.1動態符合性在第9章中規定。8.2靜態符合性由規定這些緊縮編碼規則應用的那些標準來規定。注:附錄C提供了與支持兩種編碼規則算法的兩種變體有關的靜態符合性的指南,該指南被設計成能保證互工作,8.3本文件中的規則以編碼規程的形式詳細說明。如果生成的抽象語法值完整編碼的位串與本文件為適用傳送語法規定的那些位串之一相同,則不要求此類實現與規定的規程一一對應。8.4執行解碼的實現要產生與收到的位串相一致的抽象語法值,收到的位串由發送器產生,這些發送器符合與被解碼資料相關聯的傳送語法中所標識的編碼規則。注1:通常,本文件明確說明的BASIC-PER,沒有定義替換的編碼。通過規定中繼安全操作和限制引用其他標準的某些編碼選項,使BASIC-PER成為正則的。CANONICAL-PER為要求正則和中繼安全編碼的非典型編碼規則和正則編碼規則(見GB/T16263.1)提供了一種替注2:當使用CANONICAL-PER來提供正則編碼時,建議將從其派生出的任意一個加密散列值與一個算法標識符相關聯,該算法標識符將CANONICAL-PER標識為從抽象語法值到初始位串(然后9PER編碼指令9.1PER編碼指令可以與符合GB/T16262.1和ISO/IEC8825-6規定的類型相關聯。注1:某些PER編碼指令的應用程序可能會使其不能對該類型的所有抽象值進行編碼。當出現這種情況時,特定的PER編碼指令會識別問題,這是設計者的決定,基于可能需要使用多個編碼規則,是否對類型添加顯式約束,以便將抽象值的范圍限制為那些可以通過使用PER編碼指令進行編碼處理的范圍,這可能會使規范的可注2:每個PER編碼指令都以一個標識關鍵字開始,它可以9.2如果使用BASIC-PER或CANONICAL-PER的ALIGNED版本,那么所有的PER編碼指令都應該默認忽略,且對編碼沒有影響。9.3如果使用BASIC-PER或CANONICAL-PER的UNALIGNED版本,那么如果一個類型具有相關的編碼指令,則應適用以下子條。9.3.1如果標識關鍵字未知,則應發出“不支持”的錯誤消息。9.3.2如果已知標識關鍵字,本文件的程序應通過對PER編碼指令所指定的程序的修訂進行修改(參見ISO/IEC8825-6)。注1:如果多個PER編碼指令與一種類型相關聯,則所有這些指9GB/T16263.2—XXXX/ISO/IEC8825-2:2021注2:如果由兩個或兩個以上單獨的編碼指令產生的修改發生沖突,并且沒有說明它們是相互排斥的,則PER編碼10PER使用的編碼方法10.1類型記法的使用10.1.1這些編碼規則專門使用GB/T16262.1中規定的ASN.1類型記法,并且只能適用于將使用該記法規定的單個ASN.1類型的值編碼。10.1.2特別是,但不僅僅是,它們依賴于ASN.1類型和值模型中保留的以下信息,這些信息是使用記法的基礎:a)選擇類型中的選擇類型的嵌套;b)放置在集合類型中的組件上的標簽、放置在選擇類型中的選項上的標簽及枚舉項的給定值;c)集合或者序列類型的組件是否可選;d)集合或者序列類型的組件是否有DEFAULT值;e)(只)通過PER可視約束的應用出現的類型值的受限范圍;f)組件是否是開放類型;g)類型對PER編碼是否可擴展。10.2使用標簽提供正則次序本文件要求被正則排序的集合類型和選擇類型的組件獨立于組件的正文排序,如GB/T16262.1—AAAA的8.6規定的那樣,正則排序通過排序每個組件的最外層標簽來確定。10.3PER可視約束注:對于解碼和編碼,某些ASN.1約束可能不是PER可視的,但不會以任何方式影響使用這些約束處理解碼期間檢測到的差錯,也不意味著允許違反這些約束的值被遵守規則的發送器所發送。然而,本文件并不在編碼規范10.3.1用人類可讀文本表達的或在ASN.1注釋中所表示的約束不是PER可視的。10.3.2可變的約束不是PER可視的(見GB/T16262.4—DDDD的10.3和10.4)。10.3.3用戶定義的約束不是PER可視的(見GB/T16262.3—CCCC的9.1)。10.3.4表約束不是PER可視的(見GB/T16262.3)。10.3.5組件關系約束不是PER可視的(見GB/T16262.3—CCCC中的10.7)。10.3.6計算過程文本依賴于表約束或組件關系約束的約束不是PER可視的(見GB/T16262.3)。10.3.7對不是已知倍數字符串類型的(見GB/T16262.1—AAAA的第41章)受限字符串類型的約束不是PER可視的(見3.7.16)。10.3.8模式約束不是PER可視的。10.3.9除受上述各條制約外的所有長度約束都是PER可視的。10.3.10約束類型的有效長度約束是單個長度約束,因此,當且僅當存在該(允許的)長度的某個約束類型值時,該長度才是允許的。10.3.11在應用GB/T16262.1—AAAA中的52.3到52.5之后,對不可擴展的已知倍數字符串類型的允許字母表約束是PER可視的。可擴展的允許字母表約束不是PER可視的。GB/T16263.2—XXXX/ISO/IEC8825-2:2021XX10.3.12當且僅當包含某個字符的受約束類型的某個值,該受約束類型的有效允許字母表約束是允許該字符的單個允許字母表約束。如果受約束類型的所有字符都可以出現在該受約束類型的某個值中,則該有效允許字母表約束是為不受約束的類型而定義的字符集。10.3.13在應用GB/T16262.1—AAAA中的52.3到52.5后,對不可擴展的時間類型(或有用的和定義的時間類型)的屬性設置約束不是PER可視的。可擴展的屬性設置約束不是PER可視的。10.3.14應用于實數類型的約束不是PER可視的10.3.15僅當用來限制syntaxes組件的值為單個值時,或者用來限制identification為替換的fixed標識(見第28章和第31章)時,應用于不受限字符串或者嵌入式pdv類型的內部類型約束才是PER可視的。10.3.16對有用類型上的約束不是PER可視的。10.3.17應用于字符串類型的單個值子類型約束不是PER可視的。10.3.18當且僅當所有其他約束適用于整數類型或已知倍數字符串類型時,受上述各條制約的這些約束是PER可視的。10.3.19通常對類型的約束可由各個約束組合而成,組合時使用了某些或全部包含子類型約束和一系列應用約束的集合算法。注:有關組合分別為PER可視或PER不可視約束的效果的10.3.20如果約束由約束的一系列應用組成,那么,即使不是PER可視的約束,也不影響PER編碼,但能引起可擴展性(和擴展附加部分)出現在任何按GB/T—AAAA16262.1中50.11規定的要被取消的早期約束中。注1:如果在串行應用程序中的最后一個約束不是PER可視的,那么該類型不能針對PER編碼進行擴展,并且無擴展注2:例如,因為可擴展的允許字母表約束不10.3.21如果一個PER可視約束是INTERSECTION結構的一部分,那么,得到的約束是PER可視的,并由所有PER可視部分(非PER可視部分被忽略不計)的INTERSECTION組成。如果一個不是PER可視的約束是UNION結構的一部分,那么得出的約束也不是可視的。如果一個約束有EXCEPT條款,那么,EXCEPT及隨后的值集全部忽略不計,而不管跟在EXCEPT之后的值集是否是PER可視的。有1..4的有效長度約束,但字母表約束不是可視的,10.3.22如果下列情況之一出現,則對于PER編碼,類型也是可擴展的:a)它是從一個ENUMERATED類型派生的(通過劃分子類型、指出類型引用或者置標簽),而且在“Enumerations”產生式中有擴展標記;b)它是從一個SEQUENCE類型派生的(通過劃分子類型、指出類型引用或者置標簽),而且在“ComponentTypeLists”或“SequenceType”產生式中有擴展標記;c)它是從一個SET類型派生的(通過劃分子類型、指出類型引用或者置標簽),而且在“ComponentTypeLists”或“SetType”產生式中有擴展標記;d)它是從一個CHOICE類型派生的(通過劃分子類型、指出類型引用或者置標簽而且在“AlternativeTypeLists”產生式中有擴展標記。GB/T16263.2—XXXX/ISO/IEC8825-2:202110.4編碼使用的類型和值模型10.4.1ASN.1類型要么是簡單類型,要么是使用其他類型構造的類型。記法允許使用類型引用和類型置標簽。對于這些編碼規則,使用類型引用和類型置標簽對編碼沒有影響,而且在模型中是不可視的,除非在10.2中所述。記法也允許應用約束和差錯規范。PER可視約束在模型中作為類型值的限制出現。其他約束和差錯規范不影響編碼,并且在PER類型和值模型中是不可視的。10.4.2被編碼的值可以被視為一個簡單值或者一個用結構化機制從簡單或復合值的組件構建的復合值,與ASN.1類型定義的結構并行。10.4.3當約束包括一個在根中出現的擴展附加部分的值時,該值總是編碼為根的值,而不是擴展附加部分的值。--值5被編碼為根值,而不是一個擴展附10.5編碼的結構10.5.1這些編碼規則的規定a)簡單值到字段列表的編碼;b)復合值到字段列表的編碼,使用了由這些編碼規則應用到復合值的組件而產生的字段列表;c)最外層值的字段列表到抽象語法值的完整編碼的變換(見11.1)。10.5.2數據值組件的編碼:a)由3部分構成,如圖1所示,它們以下列次序出現:1)前導碼(見第19、21和23章);2)長度決定因子(見11.9);注:前導碼、長度及內容都是“字段”,它們被拼接在一起形成“字段列表”,除選擇類型外,復合類型的字段列表可以由幾個值拼接在一起的字段構成。任一前導碼、長度和/圖1復合值到字段列表的編碼b)(若內容很長)由任意個部分構成,如圖2所示,其中第1部分是前導碼(見第19、21和23章),隨后的各部分是多對位字段(在ALIGNED變體中八位位組對齊),首先是內容段的長度決定因子,其次是各內容段;各字段的最后一對由長度決定因子部分來標識,如11.9規定。GB/T16263.2—XXXX/ISO/IEC8825-2:2021XX圖2長數據值的編碼10.5.3在10.5.2中提到的每一部分生成:a)一個空字段(無內容);b)一個位字段(未對齊);c)一個位字段(ALIGNED變體中八位位組對齊);d)一個字段列表,它可以包含位字段(未對齊)、位字段(ALIGNED變體中八位位組對齊)、或者兩者都有。10.6被編碼的類型10.6.1下列各章規定將以下類型編碼到字段列表中:布爾、整數、枚舉、實數、位串、八位位組串、空、序列、單一序列、集合、單一集合、選擇、開放、客體標識符、相關客體標識符、嵌入式pdv、外部、受限字符串和不受限字符串的類型。10.6.2選擇類型應編碼為所選類型的編碼。10.6.3除10.2說明外,有標簽類型的編碼不包括在本文件中,因為在這些編碼規則所使用的類型和值模型中置標簽是不可視的。因此,有標簽的類型根據已有標簽的類型的編碼來編碼。10.6.4帶前綴類型的編碼根據帶前綴的類型進行編碼。10.6.5下列“有用的類型”應進行的編碼,就好像它們已被GB/T16263.1—AAAA的第45章中給出的定義所取代:——通用時間;——世界協調時;——客體描述符。對有用類型的約束不是PER可視的,GB/T16263.1—EEEE的11.7和11.8對通用時間和世界協調時的編碼的限制適用于此。10.6.6使用值集賦值定義的類型應像使用GB/T16262.1—AAAA的16.8中規定的產生式定義的類型一樣進行編碼。11編碼過程11.1完整編碼的產生式11.1.1如果ASN.1類型使用在33.2中(或通過本文件的直接文本引用)列出的客體標識符所標識的任何編碼規則進行編碼,并且編碼被包括在:a)ASN.1八位位組串中;b)ASN.1位串中;c)ASN.1開放類型中;d)ASN.1外部或嵌入式pdv類型的任何部分中;e)任何不使用ASN.1定義的載體協議中;則該ASN.1類型被定義為這種應用的最外層類型,應遵循11.1.2中適用于其值的所有編碼。注1:這意味著使用此方法的所有完整的PER編碼(對所有變體)總是八位的整數倍,除非使用UNALIGNED變體,并注2:可以使用編碼控制記法(見GB/T16263.3)來規定PER編碼的變體,該編碼不會被填充到11.1.2中規定的八GB/T16263.2—XXXX/ISO/IEC8825-2:2021注3:普遍認為,在不使用ASN.1定義的載體協議中,不需要顯式攜帶額外的O位用于填充(在11.1.2中規定),但11.1.2對于最外層類型抽象值應用本文件的結果所產生的字段列表,應按照以下步驟生成該抽象語法值的完整編碼:應依序取出字段列表中的每個字段,拼接到位串的末端,形成的位串即為抽象語法值的完整編碼,該抽象語法值的完整編碼可按如下規定添加填充的附加0位。11.1.3這些編碼規則的UNALIGNED變體中,所有字段應進行拼接,而無需填充。在11.1.1中,除了情況b以外的其他情況適用,情況b適用。(對于編碼的結果不包括在ASN.1位串中的情況)如果最外層值編碼的結果是一個空位字符串,則該位串應該用所有位置為0的單個八位位組來替換。如果是非空位字符串,并且它不是八位的倍數,則應在空位串后面附加(0到7個)0位以產生8位的倍數。(對于編碼的結果包括在一個ASN.1位串中的情況)如果最外層值編碼的結果是空位字符串,則該位串應該用0位來代替,不得附加任何填充位。11.1.4如果最外層值編碼的結果是空位串,則該位串應該用所有位置為0的單個八位位組來代替。如果是非空位串,且不是八位的倍數,則應在空位串后面附加(0到7個)0位以產生8位的倍數。11.1.5在編碼規則的ALIGNED變體中,字段列表中的任意位字段應進行拼接,而無需填充。在已拼接(0到7個)0位使目前產生的編碼長度是8位的整數倍之后,任意八位位組對齊位字段應被拼接。如果最外層值編碼的結果是空位串,則用一個所有位置為0的八位位組代替該位串。如果是個非空位串,且不是8位的整數倍,則應在其后面附加(0到7個)0位產生8位的整數倍。11.1.6所產生的位串是最外層類型的抽象語法值的完整編碼。11.2開放類型字段11.2.1為了編碼開放類型字段,占用該字段的實際類型的值應編碼到一個字段列表中,然后,該字段列表應被轉換成如11.1規定的抽象語法值的完整編碼,從而產生長度為n的八位位組串。11.2.2要嵌入的開放類型值的字段列表應被添加上(如11.9規定)不受約束的長度n(以八位位組為單位)和含有11.2.1中產生位的關聯位字段(對于ALIGNED變體,采用八位位組對齊的位字段)。注:當開放類型編碼中八位位組的數目很大時,應使用11.9中的分片過程,開放類型編碼將是斷開的,而與占用11.3非負二進制整數的編碼注說明性)本條給出術語“非負二進制整數編碼”的精確描述,以便把該整數放到固定位數目的字段中,或放到固定數目的八位位組的字段中,或者放到容納該整數所需的最少數目11.3.1以下條涉及進入某一字段的非負整個數的非負二進制整數編碼的生成,而該字段是規定長度為單個八位位組、兩個八位位組的位字段或者是表示該值的最少數目八位位組的位字段,本條(11.3)規定進行引用時所使用的精確編碼。11.3.2該字段的引導位定義為位字段的引導位,或者是該字段第1個八位位組的最高有效位,該字段的末尾位定義為位字段的末尾位,或者是該字段最后1個八位位組的最低有效位。11.3.3只對以下定義,這些位應加以編號,該字段的末尾位應被編號為0,下一位編號為1,依此類推,直到該字段的引導位。11.3.4在非負二進制整數編碼中,編碼所表示的整數的值應是每位所指定值之和。置為“0”的位的指定值為0,編號為“n”的位,若置為“l”則該位的指定值為2n。11.3.5對被編碼值的求和(按上述定義)的編碼即是對該值的編碼。GB/T16263.2—XXXX/ISO/IEC8825-2:2021XX注:如果被編碼字段長度為固定(指定長度的單個八位位組或兩個八位位組的位字段)的,則存在唯一的編碼,11.3.6整個數(它不能預先確定用于編碼的八位位組的數目)的最少數目八位位組的非負二進制整數編碼具有八位的整數倍的某一字段,并且該字段應滿足如下條件,除非該字段是準確的八位長,否則該字段的引導段八位應不全是0。11.42的補碼的二進制整數的編碼注說明性)本條給出術語“2的補碼的二進制整數編碼”的精確描述,以便把有符號的整數放到為容納該有符號整數所需的最少數目的八位位組中,這些過11.4.1后續條規定如何將整數(可能是負數、0或正數)編碼到表示其值的最少數目八位位組的2的補碼二進制整數的編碼中。本條(11.4)規定進行這種引用時所使用的精確編碼。11.4.2該字段的引導位定義為第1個八位位組的最高有效位,末尾位定義為最后1個八位位組的最低有效位。11.4.3僅對以下定義,這些位應加以編號,該字段的末尾位應被編號為0,下一位編號為1,依此類推,直到該字段的引導位。11.4.4在2的補碼的二進制整數編碼中,編碼所表示的整個數的值應是每位所指定值之和。置為,?為“n”的位,若置為“1”則該位的指定值為2n,如果引11.4.5對被編碼值的求和(按上述定義)的任何編碼均為對該值的編碼。11.4.6整個數的最少數目八位位組2的補碼的二進制整數編碼具有八位的整數倍的字段寬度,并且應滿足如下條件:該字段的引導的9個位應不全是0也應不全是1。11.5受約束的整個數的編碼注說明性)本條被其他條引用,并引用前面條,以便產生非負二進制整數編碼或2的補碼的二進制整數編碼。對于UNALIGNED變體,該值總是編碼在表示該范圍(在11.5.3中定義)所需的最少數目位中,本注的其余部分針對ALIGNED變體,當范圍小于或等于255時,該值被編碼到表示該范圍的最小長度的位字段中。當范圍正好是256時,該值被編碼到單個八位位組對齊的位字段中,當范圍在257到64K之間時,該值被編碼到兩個八位位組對齊位字段中,當范圍大于64K時,則忽略范圍,并且該值被編碼到八位位組對齊位字段中,該位字段是表示該值的最少數目八位位組,在最后一種情況下,后面的過程(見11.9)將編碼一個長度字段(通常是單個),11.5.1本條(11.5)規定了如何將受約束的整個數映射到位字段(不對齊的)或者位字段(在ALIGNED變體中的八位位組對齊),并在本文件中的后續條引用。11.5.2僅當受約束的被編碼的整個數是可用的,并且下邊界“lb”和上邊界“ub”的值已從類型記法中確定下來(在應用PER可視約束之后),本條的過程才能被引用。注:如果對一個無限數求MIN值,則不能確定下邊界,如果對一個無限數求MAX值,則不能確定上邊界。例如,對11.5.3設“范圍”定義為整數值(“ub”-“lb”+1),且設被編碼的值為“n”。11.5.4如果“范圍”值為1,則編碼結果應是一個空的位字段(沒有任何位)。11.5.5有5種其他情況(導致不同的編碼)要考慮,一種適用于UNALIGNED變體,其他4種適用于ALIGNED變體。GB/T16263.2—XXXX/ISO/IEC8825-2:202111.5.6在UNALIGNED變體的情況下,值(“n”-“lb”)應編碼為按照11.3規定的位字段中的非負二進制整數,并具有為表示該范圍所需的最少數目位數。11.5.7在ALIGNED變體的情況下,編碼取決于是否:a)“范圍”小于或等于255(位字段的情況);b)“范圍”剛好等于256(一個八位位組的情況);c)“范圍”大于256且小于或等于64K(兩個八位位組的情況);d)“范圍”大于64K(不定長度的情況)。(位字段的情況)如果“范圍”值小于或等于255,則本條的引用要求生成下表所規定的位數的位字段,并包含按11.3規定的位字段中作為非負二進制整數編碼的值(“n”-“lb”)。“范圍”212345678(一個八位位組的情況)如果“范圍”值為256,則值(“n”-“lb”)應被編碼為11.3規定的非負二進制整數,放在一個八位位組位字段中(ALIGNED變體中的八位位組對齊)。(兩個八位位組的情況)如果“范圍”值大于或等于257并且小于或等于64K,則值編碼為11.3規定的非負二進制整數(“n”-“lb”)放在兩個八位位組位字段(ALIGNED變體中的八位位組對齊)中。(不定長度的情況)否則,值(“n”-“lb”)應按11.3的規定編碼為非負二進制整數,放在表示該值的最少數目八位位組的位字段(ALIGNED變體中的八位位組對齊)中,并且該編碼中使用的八位位組的數目“len”被引用本條的其他條用來規定長度的編碼。11.6正常小非負整數的編碼注說明性)當編碼期望為小非負整個數,但其長度由于存在擴展標記而引起潛在地不受限制時,可使用本過11.6.1如果非負整個數“n”小于或等于63,則一個單個位的位字段應被附加到字段列表后,該位置為0,并且“n”應編碼為非負二進制整數,放入一個6位的位字段中。11.6.2如果“n”大于或等于64,則一個置為1的單個位的位字段應被附加到字段列表后。然后,值“n”應編碼為半受約束的且“lb”等于0的整個數,并應引用11.9的過程將它附加到字段列表中,該字段列表前面是長度決定因子。11.7半受約束的整個數的編碼注說明性)當在能夠標識出下邊界但不能標識上邊界時,可適用本編碼過程。編碼過程將與下邊界的偏移值作為非負二進制整數放入最少數目的八位位組,并且要求一個按后面過程規定的顯式長度編碼(典型的是單GB/T16263.2—XXXX/ISO/IEC8825-2:2021XX11.7.1本條規定了從半受約束的整個數到位字段(ALIGNED變體中的八位位組對齊)的映射,并且它將被本文件的后續條所引用。11.7.2僅當被編碼的半受約束的整個數可用,并且下邊界“lb”的值已經從類型記法中確定(在應用PER可視約束之后)時,本條(11.7)的過程才能被引用。注:如果對一個無限數求MIN值,則不能確定下邊界。例如,對INTEGER(MIN..MAX11.7.3本條(11.7)的過程總是產生不定長度的情況。11.7.4(不定長度的情況)值(“n”-“lb”)應按11.3的規定編碼為非負二進制整數,放在表示該值的最少數目八位位組的位字段(ALIGNED變體中的八位位組對齊)中,并且該編碼中使用的八位位組的數目“len”被引用本條的其他條用來規定長度的編碼。11.8不受約束的整個數的編碼注說明性)這種情況只在沒有下邊界的整數型值的編碼中出現。本過程將該值編碼為2的補碼二進制整數,并放入容納該編碼所需的最少數目八位位組中,并且要求有一個按后面過程規定的顯式長度編碼(典型的是單11.8.1本條(11.8)規定了從不受約束的整數(如“n”)到位字段(ALIGNED變體中的八位位組對齊)的映射,它被本文件的后續條引用。11.8.2本條(11.8)的過程總是產生不定長度的情況。11.8.3(不定長度的情況)值“n”應按11.4的規定編碼為2的補碼二進制整數,放在表示該值的最少數目八位位組的位字段(ALIGNED變體中的八位位組對齊)中,并且該編碼中使用的八位位組的數目“len”被引用本條的其他條用來規定長度的編碼。11.9長度決定因子編碼的一般規則注1說明性)本條規定的過程只在編碼的某些部分需要一個顯式的長度字段時被引用,無論長度計數是否有上邊界(通過PER可視約束)。使用長度的編碼部分可能是位串(帶有以位表示的長度計數)、八位位組串(帶有以八位位組表示的長度計數)、已知倍數字符串(帶有以字符表示的長度計數)、或者字段列表(帶注2說明性)在ALIGNED變體的情況下,如果長度計數上限小于64K,則長度使用受約束的整數編碼。對于足夠小的范圍,其結果是一個位字段,否則,不受約束的長度(如“n”),將按以下列三種方式之一編碼到八):注3:(說明性)在UNALIGNED變體中,如果長度計數上限小于64K,則受約束的整數編碼用來編碼表示該范圍所需11.9.1按照后面各條的規范,如果長度決定因子“n”的值被類型定義(被PER可視約束所約束)限定為小于64K的值,則不能引用本條。11.9.2本條被引用來向字段列表附加字段或者字段列表,其前面是一個長度決定因子“n”,長度決定因子用于決定:a)以關聯字段的八位位組表示的長度(單位為八位位組);b)以關聯字段的位表示的長度(單位為位);c)以關聯的字段列表表示的組件編碼的數目(單位為單一集合或單一序列的組件);GB/T16263.2—XXXX/ISO/IEC8825-2:2021d)以關聯的已知倍數字符串類型的值表示的字符數(單位為字符)。11.9.3(ALIGNED變體)ALIGNED變體用的過程在到.4中規定(UNALIGNED變體用的過程在11.9.4中規定)。作為類型定義(在后面的條中規定)的分析結果,長度決定因子(一個整個數“n”)將被確定為:a)一個正常小長度,其下邊界“lb”等于1;或者b)一個受約束的整數,具有(大于或等于0)的下邊界“lb”,上邊界“ub”小于64K;c)一個半受約束的整個數,具有(大于或等于0)的下邊界“lb”,或者一個受約束的整個數,具有(大于或等于0)的下邊界“lb”,大于或等于64K的上邊界“ub”。引用本條(11.9)過程的各條將確定長度的下邊界“lb”的值(如果長度是不受約束的,則它為0)和長度的上邊界“ub”的值。如果從PER可視約束不能確定上邊界,則“ub”為不設置。當長度決定因子是一個“ub”小于64K的受約束的整數時,則按11.5中規定的方法,長度決定因子的受約束整個數的編碼應被附加到字段列表上。如果“n”為非0,則其后應有關聯字段或字段列表,過程結束。如果“n”為0,則對字段列表不應進一步附加任何內容,過程結束。--長度以兩個八位位組(ALIGNED變體中的注2:當這些過程被引用來添加0長度的八位位組對齊位字段時,在“n”等于0的情況下,不進行添加的影響是指當長度決定因子是一個正常小長度,并且“n”小于或等于64,則一個單個位的位字段將被附加到字段列表上,且該位被置為0,值“n-1”應被編碼為非負二進制整數放入一個6位的位字段中。其后是關聯的字段,此時這些過程結束。按照到.4中的過程,如果“n”大于64,則一個單個位的位字段應被附加到字段列表上,且該位置為1,其后是不受約束長度決定因子n的編碼,再后是關聯的字段。注:正常小長度只用來指示位圖的長度,該位圖表示集合或序列類型的否則(不受約束的長度,或大“ub”),“n”被編碼并添加到字段列表上,其后是以下規定的關聯字段。如果“n”小于或等于127,則“n”應作為非負二進制整數(使用11.3的過程)被編碼到一個單個八位位組位7(最高有效位)至位1(最低有效位)中,且位8應置為0。它應作為位字段(在ALIGNED變體中的八位位組對齊)附加到字段列表后,其后是關聯的字段或字段列表,過程結束。注:例如,如果下列A的值為4個字符長,則這兩個值都在占用一個八位位組的長度八位位組中編碼,且最高有效位置為0,以GB/T16263.2—XXXX/ISO/IEC8825-2:2021XX如果“n”大于127且小于16K,則“n”應(使用11.3的過程)編碼為非負二進制整數放入兩個八位位組位字段(在ALIGNED變體中的八位位組對齊)中的第1個八位位組(最高有效)的位6到第2個八位位組(最低有效)的位1中,同時第1個八位位組的位8置為1,第1個八位位組的位7置為0。它應被附加到字段列表后,其后是關聯字段或字段列表,過程結束。注:如果在示例中A的值為130個字符,B的值為130項,則這兩個值在占用2個八位位組的長度組件和該八位位組的2個最高有效位(位8和位7)均置為10的情況下進行編碼,表示長度大于如果“n”大于或者等于16K,則在位字段(在ALIGNED變體中的八位位組對齊)中的單個八位位組應被附加到字段列表上,該單個八位位組的位8置為1,位7置為1,并且位6到位1是值1、2、3或4,作為非負二進制整數(使用11.8的過程)編碼。該單個八位位組后應是下面規定的部分關聯字段或字段列表。注:位6到位1的值限制為1~4(而不是理論值0~63),是為了把實現必須了解的項數限制到更易于管理的數目.1位6到位1的值(1到4)應乘以16K來給出計數(記“m”)。位6到位1中的整數的選擇應是最大可允許的值,這樣,相關聯的字段或字段列表含有多于或正好等于合適的“m”個八位位組、位、組件或字符。注1:不分片形式處理的長度達16K,因此分片可以提供高達64注2:如果在的示例中,B的值長度為144K+1(即64K+64K+l6K+l)項長,則該值被分片,前三個分片的兩個最高有效位(位8和位7)置為11,表明后面的1到4個塊,每塊16K項,另一個長度組件跟在每個分片的最.2“m”指定的內容部分應以以下方式添加到字段列表中:a)“m”個八位位組的單個位字段(在ALIGNED變體中的八位位組對齊)含有關聯字段的前“m”個八位位組,單位為八位位組;b)“m”位的單個位字段(在ALIGNED變體中的八位位組對齊)含有關聯字段的前“m”位,單位為位;c)字段列表編碼關聯字段列表中的前“m”個組件,單位為單一集合類型或單一序列類型的組件;a)“m”個字符的單個位字段(在ALIGNED變體中的八位位組對齊)含有關聯字段的前“m”個字符,單位為字符。GB/T16263.2—XXXX/ISO/IEC8825-2:202.3應重新應用11.9的過程將關聯字段或字段列表的其余部分附加到帶有長度的字段列表上,該長度是等于(“n”-“m”)的半受約束整個數,下邊界為0。注:如果含有部分編碼值的最后一個分片的長度正好是16K的整數倍,則其后的最末一個分片只由單個八位位組的.4重復應用上述過程,只將關聯字段的一部分添加到字段列表上稱為分片過程。11.9.4(UNALIGNED變體)UNALIGNED變體用的過程在到中規定(ALIGNED變體用的過程在11.9.3中規定)。如果要編碼的長度決定因子“n”是“ub”小于64K的受約束的整個數,則應使用編碼“范圍”(“ub”-“lb”+1)所需的最少數目位數將(“n”-“lb”)編碼為非負二進制整數(在11.3中規定),除非范圍是1,在這種情況下,不應有長度編碼。如果“n”為非0,則其后是關聯字段或字段列表,過程結束。如果“n”是0,則不再向該字段列表添加字段表,過程結束。如果被編碼的長度決定因子“n”是一個正常小長度、或是一個大于或等于64K的受約束整個數、或是一個半受約束整個數,則“n”應按照到.4中的規定進行編碼。12布爾類型的編碼12.1布爾類型的值應被編碼為由單個位構成的位字段。12.2該位應置l為TRUE,置0為FALSE。12.3位字段應被添加到不帶長度決定因子的字段列表上。13整數類型的編碼注1:(ALIGNED變體說明性)所允許的全部值編碼到一個或更少的八位位組的范圍,放入一個沒有長度計數的最小長度的位字段,所允許的全部值編碼到兩個八位位組的范圍,放入一個沒有長度計數的八位位組對齊的位字段中的兩個八位位組。否則,該值被編碼到最少數目的八位位組(當合適時使用非負二進制整數或2的補碼二進制整數編碼)中并添加上長度決定因子。在這種情況下,如果整數值可以被編碼在小于127個八位位組(作為可能確定的任何下邊界的偏移)中,并且沒有有限上邊界和下邊界,則存在一個八位位組的長度決定因子,否則,該長度被編碼在所需的最少位數中。其他情況沒有實際意義,但為了完注2UNALIGNED變體說明性)受約束的整數被編碼為表示其范圍所需的最小位數,而不管其大小。不受約束的13.1如果在整數類型的約束規范中出現擴展標記,則單個位應作為長度為1的位字段添加到字段列表上。如果被編碼的值不在擴展根的范圍內,則該位應置為1,否則置為0。對前一種情況,該值應按13.2.4到13.2.6的規定,作為不受約束的整數值添加到字段列表中,結束此過程。對后一種情況,該值應按照不存在擴展標記的情況進行編碼。13.2如果整數類型的約束規范中不存在擴展標記,則使用下列條。13.2.1如果PER可視約束將整數值限制為單個值,則不應向字段列表添加任何內容,過程結束。13.2.2如果PER可視約束將整數值限制為受約束的整個數,則應按照11.5(受約束的整個數的編碼)的過程將其轉換成某個字段,然后應使用13.2.5到13.2.6的過程。13.2.3如果PER可視約束將整數值限制為半受約束的整個數,則應按照11.7(半受約束的整個數的編碼)的過程將其轉換成某個字段,然后應使用13.2.6的過程。GB/T16263.2—XXXX/ISO/IEC8825-2:2021XX13.2.4如果PER可視約束不將整數值限制為受約束的整個數或者半受約束的整個數,則按照11.8(不受約束的整個數的編碼)的過程將其轉換成某個字段,然后應使用13.2.6的過程。13.2.5如果引用將整數值編碼到某個字段的過程不產生不定長度的情況(見和11.8.2),則該字段應被添加到字段列表上,過程結束。13.2.6否則(不定長度情況),不應引用11.9的過程把該字段附加到其前面是下列內容之一的字段列表上:a)受約束的長度決定因子等于“len”(按所確定的),如果PER可視約束限制了帶有有限上下邊界的類型,并且如果該類型是可擴展的,則該值位于擴展根范圍內。長度決定因子使用的下邊界“lb”應是1,上邊界“ub”應是容納該整數值范圍所需的八位位組數的計數。00xxxxxx00000000,其中‘x’表示一個零填充位,它可能存在也可能不存在,這取決于長度在八位位組中出現的位置(例如,如果長度開始于一個八位位組的邊界,則編碼是00xxxxxx00000000,如果長度開始于一),b)不受約束的長度決定因子等于“len”(按11.7和11.8所確定的),如果PER可視約束不限制具有有限上下邊界的類型,或者如果該類型是可擴展的,并且該值不在擴展根的范圍內。14枚舉類型的編碼注說明性)沒有擴展標記的枚舉類型被編碼為一個受約束整數,其子類型約束不包含擴展標記。這意味著枚舉類型在實際中,枚舉類型差不多總是被編碼為表示每個枚舉所需的最少位數中的某個位字段。存在擴展標記時,如果該值不在擴展根中,則將其編碼為正14.1枚舉根中的若干枚舉應根據其枚舉值升序排列,然后應賦予第一個枚舉以0開始的枚舉索引,1賦予第2個枚舉,以此類推,直到排序表中的最后一個枚舉。擴展附加枚舉(始終按升序定義)應賦予從0開始的枚舉索引,1賦予給第2個枚舉,以此類推,直到擴展附加枚舉中的最后一個枚舉。注:GB/T16262.1—AAAA要求每個連續的擴展附14.2如果在枚舉類型定義中不存在擴展標記,則應編碼枚舉索引。其編碼應被視為不存在擴展標記的受約束整型值,其中下邊界為0,而上邊界為與該類型相關聯的最大枚舉索引,過程結束。14.3如果存在擴展標記,則單個位應添加到長度為1的位字段內的字段列表中。如果被編碼值不在擴展根中,則應將該位置為1,否則置為0。對前一種情況,應按照14.1將附加枚舉排序,該值應作為正常小非負整個數添加到字段列表中,該整數的值是附加枚舉的枚舉索引,并且其“lb”置為0,過程結束。對后一種情況,就好像擴展標記不存在那樣,該值應按照14.2的規定進行編碼。注:沒有可適用于枚舉類型的PER可視約束對這15實數類型的編碼注說明性)實數使用以長度決定因子開頭的CER/DER內容八位位組,在實際中,該長度決定因子是單個八位位15.1如果抽象值的基數是10,則編碼值的基數應是10,如果抽象值的基數是2,則編碼值的基數應該是2。15.2應使用GB/T16263.1—EEEE的11.3中的CER和DER所規定的REAL編碼來給出某個位字段(在ALIGNED變體中的八位位組對齊),該位字段是CER/DER編碼的內容八位位組。該編碼的內容八位位組由“n”個八位位組構成,并且被放在“n”個八位位組的位字段(在ALIGNED變體中的八位位組對GB/T16263.2—XXXX/ISO/IEC8825-2:2021齊)中。應引用11.9的過程把這一“n”個八位位組的位字段(在ALIGNED變體中的八位位組對齊)添加到字段列表上,前面是等于“n”的不受約束的長度決定因子。16位串類型的編碼注說明性)受約束于固定長度小于或等于16位的位串不會引起八位位組對齊,較大位串是在ALIGNED變體中的八位位組對齊的。如果長度被若干約束所固定,且上邊界小于64K,則沒有顯式的長度編碼,否則,所包含的長度編碼可以采用任何一種前面規定的長度編碼的形式,包16.1PER可視約束只能約束位串的長度。16.2在不存在PER可視約束,并且GB/T16262.1—AAAA的22.7適用時,該值應編碼為不帶尾0位(注,這意味著不帶1位的值總被編碼為空位串)。16.3在存在PER可視約束,并且GB/T16262.1—AAAA的22.7(即位串類型是用“NamedBitList”定義)適用時,當有必要保證發送值的長度是能攜帶該值的最小長度,并且滿足有效長度約束時,該值應是使用增加或去掉尾0位的編碼。16.4設位串(在長度上由PER可視約束所確定)中的最大位數為“ub”,最少位數為“lb”。如果沒有有限最大長度,則認為“ub”未設置。如果在最小長度上沒有約束,則“lb”為0,設要編碼的實際位串值的長度為“n”位。16.5當位串值按16.6到16.11的規定放到某個位字段中時,位串值的引導位應放在該位字段的引導位上,并且位串值的末尾位應放在該位字段的末尾位上。16.6如果位串類型對PER編碼具有可擴展(見10.3.9則應將一個由單個位組成的位字段添加到字段列表中。如果該編碼的長度不在擴展根的范圍內,則該位應被置1,否則置0。對前一種情況,應按照16.11將長度作為半受約束的整數加到字段列表中,其后是位串值。對后一種情況,長度和值應按擴展不存在的情況進行編碼。16.7如果位串類型的長度約束規范中不存在擴展標記,則適用16.8到16.11。16.8如果位串被約束為0長度(“ub”等于0),則不應對其進行編碼(字段列表不添加位串),本條過程結束。16.9如果位串的所有值都被約束為同一長度(“ub”等于“lb”),并且長度小于或等于16位,則位串應被放入到約束長度為“ub”的位字段中,該“ub”應被添加到無長度決定因子的字段列表上,本條過程結束。16.10如果位串的所有值都被約束為同一長度(“ub”等于“lb”),并且該長度大于16位,但小于64K位,則位串應被放入到長度為“ub”(不必是8位的整數倍)的位字段(在ALIGNED變體中的八位位組對齊)中,且該位串應被添加到不帶長度決定因子的字段列表上,本條過程結束。16.11如果16.8到16.10不適用,則位串應被放入到長度為“n”位的位字段(在ALIGNED變體中的八位位組對齊)中,且應根據11.9的過程把這個“n”位的位字段(在ALIGNED變體中的八位位組對齊)添加到字段列表中,如果設置了“ub”且小于64K,則該字段列表前面是作為受約束的整數的等于“n”位的長度決定因子,或者,如果未設置“ub”,則該字段列表前面是作為半受約束的整數的等于“n”位的長度決定因子,“lb”如上所述。17八位位組串類型的編碼注說明性)固定長度小于或等于兩個八位位組的八位位組串不是八位位組對齊的。所有其他八位位組串都是在ALIGNED變體中八位位組對齊的。如果固定長度八位位組小于64K,則使用無長度八位位組進行編碼。對于GB/T16263.2—XXXX/ISO/IEC8825-2:2021XX不受約束的八位位組串,該長度則被顯式編17.1PER可視約束只能約束八位位組串的長度。17.2設八位位組串(在長度上由PER可視約束所確定)中八位位組的最大數目為“ub”,最小數目為“lb”。如果沒有有限最大值,則認為“ub”未設置。如果在最小值上沒有約束,則“lb”為0。設要編碼的實際八位位組串的值的長度為“n”個八位位組。17.3如果八位位組串類型對PER編碼具有可擴展(參見10.3.9),則應將由單個字段組成的位字段添加到字段列表中。如果該編碼的長度不在擴展根的范圍內,則該位應被置1,否則置0。對前一種情況,應按照17.8條將長度作為半受約束的整個數加到字段列表中,其后是八位位組串值。對后一種情況,長度和值應按擴展不存在的情況進行編碼。17.4如果在八位位組串類型的約束規范中不存在擴展標記,則適用17.5至17.8。17.5如果八位位組串被約束為0長度(“ub”等于0),則不應對其進行編碼(對字段列表不添加八位位組),本條過程結束。17.6如果八位位組串的所有值都被約束為同一長度(“ub”等于“lb”),并且該長度小于或等于兩個八位位組,則八位位組串應放到位數等于受約束長度為八倍“ub”的位字段中,該長度應被添加到不帶長度決定因子的字段列表上,本條過程結束。17.7如果八位位組串的所有值都被約束為同一長度(“ub”等于“lb”),并且該長度大于兩個八位位組,但小于64K,則八位位組串應放到受約束長度為“ub”的位字段(在ALIGNED變體中的八位位組對齊)中,且該長度應被添加到不帶長度決定因子的字段列表上,本條過程結束。17.8如果17.5到17.7不適用,則八位位組串應放到長度為“n”個八位位組的位字段(在ALIGNED變體中的八位位組對齊)中,且應按照11.9的過程把該“n”個八位位組的位字段(在ALIGNED變體中的八位位組對齊)添加到字段列表上,如果設置了“ub”,則該字段列表前面是作為受約束的整數的等于“n”個八位位組的長度決定因子,如果未設置“ub”,則該字段列表前面是作為半受約束的整個數的等于“n”個八位位組的長度決定因子。“lb”如上確定。注:在16K、32K、48K或64K個八位位組之18空值類型的編碼注說明性)空值類型基本上是一個位置占位符,僅在選擇、可選集合或序列組件的情況下才有實際意義。在這些編碼規則中,執行選擇中空值的標識或其作為可選元素存在,而無需用八位位組表示空值。因此,空值對于空值的字段列表不應有任何添加。19序列類型的編碼注說明性)序列類型以位圖前導碼開始。如果該序列類型沒有擴展標記,則該位圖只記錄該類型中默認或可選組件是否存在,編碼為固定長度的位字段。如果該序列類型有擴展標記,則該位圖前有單個位,說明編碼中擴展附加部分的值是否真的存在。只要前導碼的長度小于64K位,其編碼就不帶任何長度決定因子,否則對長度決定因子進行編碼以獲得分片。該前導碼后面是對每個組件依次編碼的字段,如果存在擴展附加部分,則第1個被編碼的擴展附加部分前面是被編碼類型中的擴展附加數目計數的編碼(作為通常很小的長度),后面是長度等于該計數的位圖,記錄每個擴展附加部分存在與否,其后是各擴展附加部分的編碼,各擴展附加19.1在“ComponentTypeLists”或“SequenceType”中,如果序列類型具有擴展標記,則應首先將單個位添加到長度為1的位字段內的字段列表中。如果編碼中存在擴展附加值,則該位應被置1,否GB/T16263.2—XXXX/ISO/IEC8825-2:2021則置0(該位在下文中稱為“擴展位”)。如果在“ComponentTypeLists”或“SequenceType”中沒有擴展標記,則不應添加擴展位。19.2如果序列類型在擴展根內有“n”個組件,標記為OPTIONAL或者DEFAULT,則應產生帶有“n”位的單個位字段作為字段列表的附加部分。該位字段的位應依次對序列類型中每個可選或者默認組件的編碼存在與否進行編碼,位值為1應編碼為組件的編碼存在,位值為0編碼為組件的編碼不存在。前導碼中的引導位應對第1個可選或者默認組件的存在與否進行編碼,末尾位應對最后1個可選或者默認組件的存在與否進行編碼。19.3如果“n”小于64K,則該位字段應添加到字段列表上。如果“n”大于或等于64K,則應按照11.9的過程把這個“n”位的位字段添加到字段列表上,其前面是作為受約束的整數的等于“n”位的長度決定因子,它的“ub”和“lb”都是“n”。注:在這種情況下,“ub”和“lb”都將被長度過程忽略。這里引用這些過程是為了提供大前導碼的分片。這種19.4前導碼后面應依次列出存在的序列值組件的字段列表。19.5對于CANONICAL-PER,如果要被編碼的值是個默認值,則標記為DEFAULT的組件的編碼應始終不存在。對于BA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論