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