0

在 ASN.1 中,某些类型具有相同类型的值表示法。例如,该值'ABCD'H是可以表示OCTET STRING类型或BIT STRING类型的十六进制字符串。类似地,值10是一个可以是INTEGER类型或REAL类型的数字。但是如果我们给一个变量赋值,那么我们可以在赋值表达式中使用该变量来获得兼容的类型吗?

例如:

MySchema DEFINITIONS AUTOMATIC TAGS ::= 
BEGIN

   x OCTET STRING ::= 'ABCD'H
   y BIT STRING ::= x          -- is this valid?

   i INTEGER ::= 10
   r REAL ::= i                -- is this valid?

END

ASN.1 的至少一种实现在这里给出了错误消息。但我找不到实际标准对此有何评论。

4

1 回答 1

1

不,这是不合法的。您对 y 和 r 的定义分别需要一个 BIT STRING 值和一个 REAL 值。x 是一个 OCTET STRING 值(它不是词法字符串“'ABCD'H”),而 i 是一个 INTEGER 值(它不是词法字符串“10”)。

您可以参考 X.680 16.2 和附录 C 了解更多信息。16.2 要求:

在“ValueAssignment”中分配给“valuereference”的值是“Value”,并由“Type”管理,并且应是“Type”定义的类型值的符号(如 16.3 中所指定)。

附录 C 讨论了类型兼容性。

于 2013-11-08T21:10:31.793 回答