在ASN.1中,写入
是有效的(SIZE(10))
这相当于(SIZE(10..10))
,(SIZE(0..10))
还是(SIZE(1..10))
?或者是其他东西?标准中指定的是哪里?
似乎所有解析器都将其解释为(SIZE(10..10))
。但是,我无法找到任何规范。
答案 0 :(得分:3)
简而言之: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
in 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
(表示关闭或开放范围)