【问题标题】:Constrain the indexes for SEQUENCE OF types in ASN.1约束 ASN.1 中 SEQUENCE OF 类型的索引
【发布时间】:2019-09-19 13:21:20
【问题描述】:

是否可以在 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 的大小创建约束,但预计不会对索引行为产生任何影响。我假设这留给实现语言来定义?

这对吗?

【问题讨论】:

  • 是的,这是正确的。

标签: arrays constraints asn.1


【解决方案1】:

在 ASN.1 中,对于 SEQUENCE OF,没有“索引”的概念。您的上述作业均无效。

您可以指定对 SEQUENCE OF 的元素数量的限制。例如,如果你写

A1 ::= 整数序列(大小 (10))

您将元素的数量限制为 10。此 SEQUENCE-OF 类型的任何值都必须恰好有 10 个元素。

如果你写

A2 ::= 序列(大小(1..10))整数

此 SEQUENCE-OF 类型的任何值都必须至少有 1 个元素,最多有 10 个元素。在这种情况下,元素的数量被限制在一个大小范围内,而不是固定大小。

您还可以编写更复杂的约束,如下所示:

A3 ::= SEQUENCE (SIZE (1 | 4 | 6..MAX)) OF INTEGER

在这种情况下,该 SEQUENCE-OF 类型的任何值都必须具有 1、4 或 6 个或更多元素。例如,值 {2} 和 {-5, 5, 1, -3} 是有效值,而 {1, 2} 不是。

您不能在大小约束中使用负整数,因为您使用的整数指定了元素的数量,而不是索引值。

【讨论】:

  • 感谢您的澄清。我希望我错过了什么,因为语法描述不容易阅读(至少对我来说)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
相关资源
最近更新 更多