【问题标题】:ASN.1 SubType Constraint ResolutionASN.1 子类型约束解析
【发布时间】:2013-09-17 13:57:04
【问题描述】:

ASN.1 允许您声明“子类型”,这基本上对常规类型施加了额外的约束。

因此,常规类型是:

IntType ::= INTEGER

但是你可以通过创建一个只允许特定范围内的值的“子类型”来限制类型,例如:

IntType ::= INTEGER (1..100)

这将IntType 声明为必须介于1 和100 之间的INTEGER

我的问题是,一旦声明了子类型,ASN.1 如何处理对子类型的进一步约束?假设我也说:

AnotherIntType ::= IntType (1..50)

这有效吗?我现在创建了第二个子类型,它进一步约束IntType。但是如果约束相互矛盾怎么办,如下所示:

AnotherIntType ::= IntType (1..200)

有解决这些矛盾的具体规则吗?

【问题讨论】:

    标签: asn.1


    【解决方案1】:

    按照标准

    47.4.2 “ValueRange”指定值范围内的值,这些值通过指定 范围的端点。此表示法只能应用于整数类型,某些受限的“PermittedAlphabet” 字符串类型(IA5String、NumericString、PrintableString、VisibleString、BMPString、 仅限 UniversalString 和 UTF8String)和真实类型。 “ValueRange”中指定的所有值都必须是 在父类型的根目录中。

    你的第一个例子

    AnotherIntType ::= IntType (1..50)
    

    有效。允许的值是从 1 到 50 的整数。

    第二个例子

    AnotherIntType ::= IntType (1..200)
    

    无效,因为并非值范围内的所有值都在父类型中。 IntType 只包含从 1 到 100 的整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2017-09-30
      相关资源
      最近更新 更多