2014-06-16 39 views
0

在ASN.1,它是有效的寫ASN.1規範

(SIZE(10)) 

這是相當於(SIZE(10..10))(SIZE(0..10))(SIZE(1..10))?或者是其他東西?標準中規定了哪些內容?

似乎所有解析器都將其解釋爲(SIZE(10..10))。但是,我無法爲此找到任何規格。

回答

2

簡而言之:SIZE(10)約束該類型的大小爲10(並且只有10)。


與所述標準參考文獻詳細說明:

尺寸約束在X.680的部分47.5

特別

SizeConstraint ::= SIZE Constraint 

Constraint在第45.6定義定義:

Constraint ::= "(" ConstraintSpec ExceptionSpec ")" 
ConstraintSpec ::= 
    SubtypeConstraint 
    | GeneralConstraint 

GeneralConstraint在X.682定義(代表更復雜的約束),而SubtypeConstraint在45.7

SubtypeConstraint ::= ElementSetSpecs 

在46.1(這裏變得艱難定義......我會盡量擴大唯一的路徑,我們需要)

ElementSetSpecs ::= 
     RootElementSetSpec 
    | RootElementSetSpec "," "..." 
    | RootElementSetSpec "," "..." "," AdditionalElementSetSpec 

RootElementSetSpec ::= ElementSetSpec 

ElementSetSpec ::= Unions 
    | ALL Exclusions 

Unions ::= Intersections 
    | UElems UnionMark Intersections 

Intersections ::= IntersectionElements 
    | IElems IntersectionMark IntersectionElements 

IntersectionElements ::= Elements | Elems Exclusions 

在46.5

Elements ::= 
    SubtypeElements 
    | ObjectSetElements 
    | "(" ElementSetSpec ")" 

在47.1

SubtypeElements ::= 
     SingleValue 
    | ContainedSubtype 
    | ValueRange 
    | PermittedAlphabet 
    | SizeConstraint 
    | TypeConstraint 
    | InnerTypeConstraints 
    | PatternConstraint 

單值在47.2.1

SingleValue ::= Value 

值範圍定義在47.4.1

ValueRange ::= LowerEndpoint ".." UpperEndpoint 

所以定義...我們限制的大小一個類型(INTEGER類型的約束),定義一個有效值的集合(ElementSetSpecs)。該集合使用包含可選聯合和可選交集Elements的表達式語言指定。 Elements可以是幾件事情(取決於目標類型),其包括任一SingleValue(表示單個值)或ValueRange(指示關閉或打開範圍)

+0

正是我需要的。感謝您的詳細解答! –