约束 ASN.1 中 SEQUENCE OF 类型的索引
Constrain the indexes for SEQUENCE OF types in ASN.1
是否可以在 ASN.1 中为 SEQUENCE OF 类型的可用索引添加约束?
类似于此
MyArray ::= SEQUENCE (1..10) OF INTEGER -- MyArray has 10 elments indexed from 1-10
Array2 ::= SEQUENCE (-5..5) OF INTEGER -- Array2 has 11 elments indexed from -5-5
我试图从 Dubuisson 的 ASN.1 书中找到它,但我不确定我是否正确理解了语法描述。
我目前的理解是,可以对 SEQUENCE OF 的大小创建约束,但不会对索引行为产生任何影响。我假设这留给实现语言来定义?
这是正确的吗?
在 ASN.1 中,对于 SEQUENCE OF 没有 "index" 的概念。您的上述分配均无效。
您可以对 SEQUENCE OF 的元素数量指定限制。例如,如果您写
A1 ::= 整数序列(大小(10))
您将元素的数量限制为 10。此 SEQUENCE-OF 类型的任何值都必须恰好包含 10 个元素。
如果你写
A2 ::= 整数序列(大小(1..10))
此 SEQUENCE-OF 类型的任何值都必须至少有 1 个元素,最多有 10 个元素。在这种情况下,元素的数量被限制在一定范围内,而不是固定大小。
您还可以编写更复杂的约束,如下所示:
A3 ::= 整数序列(大小(1 | 4 | 6..MAX))
在这种情况下,此 SEQUENCE-OF 类型的任何值都必须具有 1、4 或 6 个或更多元素。例如,值 {2} 和 {-5, 5, 1, -3} 是有效值,而 {1, 2} 不是。
您不能在大小约束中使用负整数,因为您使用的整数指定了元素的数量,而不是索引值。
是否可以在 ASN.1 中为 SEQUENCE OF 类型的可用索引添加约束? 类似于此
MyArray ::= SEQUENCE (1..10) OF INTEGER -- MyArray has 10 elments indexed from 1-10
Array2 ::= SEQUENCE (-5..5) OF INTEGER -- Array2 has 11 elments indexed from -5-5
我试图从 Dubuisson 的 ASN.1 书中找到它,但我不确定我是否正确理解了语法描述。
我目前的理解是,可以对 SEQUENCE OF 的大小创建约束,但不会对索引行为产生任何影响。我假设这留给实现语言来定义?
这是正确的吗?
在 ASN.1 中,对于 SEQUENCE OF 没有 "index" 的概念。您的上述分配均无效。
您可以对 SEQUENCE OF 的元素数量指定限制。例如,如果您写
A1 ::= 整数序列(大小(10))
您将元素的数量限制为 10。此 SEQUENCE-OF 类型的任何值都必须恰好包含 10 个元素。
如果你写
A2 ::= 整数序列(大小(1..10))
此 SEQUENCE-OF 类型的任何值都必须至少有 1 个元素,最多有 10 个元素。在这种情况下,元素的数量被限制在一定范围内,而不是固定大小。
您还可以编写更复杂的约束,如下所示:
A3 ::= 整数序列(大小(1 | 4 | 6..MAX))
在这种情况下,此 SEQUENCE-OF 类型的任何值都必须具有 1、4 或 6 个或更多元素。例如,值 {2} 和 {-5, 5, 1, -3} 是有效值,而 {1, 2} 不是。
您不能在大小约束中使用负整数,因为您使用的整数指定了元素的数量,而不是索引值。