【问题标题】:What is the effective tagging environment in case of an imported type?在导入类型的情况下,有效的标记环境是什么?
【发布时间】:2013-03-25 21:10:26
【问题描述】:

作为一个例子,让我们假设以下设置:

具有显式标记的标记环境的模块定义 A 定义了 foo 类型。并且具有隐式标记环境的模块 B 导入 foo 并将其分配给 bar。

当使用模块 B 读取流时,我不清楚哪种标记环境有效。模块 B 定义了 bar 的标记环境(隐式)(被导入 foo)还是声明它的模块的标记环境(模块 A 中的 foo 因此显式)有效?

我希望我对这个问题的解释足够好

【问题讨论】:

    标签: asn.1


    【解决方案1】:

    首先,导入不是像 C 中的 #include 那样的文本内容。它只是使其他模块中的类型可以访问,而无需使用它们的模块名称来限定它们。

    X.680 13.1 Note 4 专门针对您的问题:

    模块定义的“TagDefault”值只影响那些 在模块中明确定义的类型。它不影响 导入类型的解释。

    但是请注意,如果在模块 B 中(导入了 foo),则编写:

    Bar ::= [应用程序 5] Foo

    这相当于:

    Bar ::= [应用程序 5] 隐式 Foo

    因为在定义 TaggedType 的模块 B 中,标记环境是隐式的。

    注释的意思是,如果在模块 A 中,您有:

    Foo ::= SEQUENCE { x [0] INTEGER }

    那么 x 上的标记是一个 EXPLICIT 标记,因为模块 A 中的标记环境是显式的,并且 Foo 将始终以这种方式处理,即使在使用其隐式标记环境导入模块 B 时也是如此。

    【讨论】:

    • 非常感谢。这是对我的问题的明确而准确的回答。你必须对这些事情有非常深刻的理解。我觉得既令人钦佩又令人毛骨悚然:) 当涉及到 ASN.1 相关问题时,很难回答问题。
    猜你喜欢
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 2020-05-26
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多