ASN.1 允许您声明“子类型”,这基本上对常规类型施加了额外的约束。
因此,常规类型将是:
IntType ::= INTEGER
但是您可以通过创建仅允许特定范围内的值的“子类型”来限制类型,例如:
IntType ::= INTEGER (1..100)
这声明IntType
为INTEGER
必须在 1 到 100 之间。
我的问题是,一旦声明了子类型,ASN.1 如何处理对子类型的进一步约束?假设我还说:
AnotherIntType ::= IntType (1..50)
那有效吗?我现在创建了第二个 SubType,它进一步约束IntType
. 但是,如果约束相互矛盾怎么办,例如:
AnotherIntType ::= IntType (1..200)
是否有解决这些矛盾的具体规则?