ASN.1值表示法:分配不同类型的值

时间:2013-11-08 17:42:59

标签: asn.1

在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的至少一个实现在此处给出了错误消息。但我找不到实际标准对此的说法。

1 个答案:

答案 0 :(得分: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讨论了类型兼容性。