是否可以在ASN.1中为类型序列的可用指示器添加约束?大致是这样的
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书中找到它,但我不能完全确定我是否正确地理解了语法描述。
我目前的理解是,可以对序列的大小创建约束,但预计不会对索引行为产生任何影响。我假设这是留给实现语言来定义的?
这是正确的吗?
发布于 2019-09-20 03:52:48
在ASN.1中,没有“索引”的概念。您的上述作业均无效。
序列的元素数指定约束。例如,如果您编写
整数的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}不是有效值。
不能在大小约束中使用负整数,因为使用的整数指定的是元素数,而不是索引值。
https://stackoverflow.com/questions/58012004
复制相似问题