2

ASN.1 では、基本的に通常の型に追加の制約を課す「サブタイプ」を宣言できます。

したがって、通常のタイプは次のようになります。

IntType ::= INTEGER

ただし、次のように、特定の範囲内の値のみを許可する「サブタイプ」を作成することにより、タイプを制限できます。

IntType ::= INTEGER (1..100)

これは、1 から 100 の間でなければならない IntTypeとして宣言します。INTEGER

私の質問は、サブタイプが宣言されると、ASN.1 はサブタイプのさらなる制約をどのように処理するのですか? また、次のように言うとします。

AnotherIntType ::= IntType (1..50)

それは有効ですか?さらに制約する 2 番目の SubType を作成しましたIntType。しかし、次のように、制約が互いに矛盾する場合はどうなるでしょうか。

AnotherIntType ::= IntType (1..200)

これらの矛盾を解決するための特定のルールはありますか?

4

1 に答える 1

1

規格によると

47.4.2 「ValueRange」は、範囲の終点の値を指定することによって指定される値の範囲内の値を指定します。この表記法は、整数型、特定の制限付き文字列型 (IA5String、NumericString、PrintableString、VisibleString、BMPString、UniversalString、UTF8String のみ) の「PermittedAlphabet」、および実数型にのみ適用できます。「ValueRange」で指定されたすべての値は、親タイプのルートにある必要があります。

あなたの最初の例

AnotherIntType ::= IntType (1..50)

有効です。許容値は 1 から 50 までの整数です。

2番目の例

AnotherIntType ::= IntType (1..200)

値の範囲内のすべての値が親タイプにあるわけではないため、無効です。IntType1 から 100 までの整数のみが含まれます。

于 2013-09-17T14:39:57.093 に答える