PER 编码中的单值约束

问题描述 投票:0回答:1

我的理解是,X.691 中的以下语句表示具有单值约束的 INTEGER 类型不会编码任何内容。

13.2.1 如果 PER 可见约束将整数值限制为单个值,则不应向字段列表添加任何内容,从而完成这些过程。

我还了解到 ASN.1 中没有编码任何内容,如下所示。我用 python 中的 asn1tools 测试了它。

Num1 ::= INTEGER (40)

Input: Num1 = 40
Output: b'' (Empty bit string)

当使用联合进行单值约束时,不能保证编码的值始终相同。然而,使用 python 中的 asn1tools 时,不会对任何内容进行编码。

Num2 ::= INTEGER (40 | 50 | 60)

Encoding:
  Input: Num2 = 40
  Output: b'' (Empty bit string)
  Input: Num2 = 50
  Output: b'' (Empty bit string)
  Input: Num2 = 60
  Output: b'' (Empty bit string)

Decoding:
  Input: b'' (Empty bit string)
  Output: 40

我曾假设它会遵循 ENUMERATED 类型编码,但我没有在 X.691 中找到这一点的基础。

我想知道在上述情况下没有编码是否正确,以及使用联合时它是否不再是单值约束。

如有任何帮助,我们将不胜感激。

asn.1 asn1tools
1个回答
0
投票

这是您所使用的工具的限制...

如果您尝试https://asn1.io/您会发现以下结果

Num2 ::= INTEGER (40 | 50 | 60)

Encoding:
  Input: Num2 = 40
  Output: b'' (Empty bit string)
  Input: Num2 = 50
  Output: b'01010000' (0x50)
  Input: Num2 = 60
  Output: b'10100000' (0xA0)

希望有人能解释如何从 X691 文档中得到它

© www.soinside.com 2019 - 2024. All rights reserved.