代码之家  ›  专栏  ›  技术社区  ›  Hari Krishna

ASN。1如何使用选项类型

  •  3
  • Hari Krishna  · 技术社区  · 6 年前

    我的模式设计如下。

    Motorcar ::= SEQUENCE {
        carRegNumber VisibleString
    }
    
    Bicycle ::= SEQUENCE {
       bicycleColor VisibleString,
       bicycleModel VisibleString
    }
    
    Boat ::= SEQUENCE {
        boatRegNumber VisibleString
    }
    
    PreferredVehicle ::= CHOICE { car Motorcar, bicycle Bicycle, boat Boat }
    
    Person ::= SEQUENCE {
        name VisibleString,
        id VisibleString,
        preferredVehicle PreferredVehicle
    }
    

    当我在' http://asn1-playground.oss.com/ ,编译成功。

    但是,当我创建Person类型的对象时,我会出错。

    myBicycle Bicycle ::= {
        bicycleColor "Blue",
        bicycleModel "Hero 42M"
    }
    
    person Person ::= {
        name "Rama Krishna",
        id "I123456",
        preferredVehicle myBicycle
    }
    

    谁能告诉我我的模式和数据有什么问题吗。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Paul Thorpe    6 年前

    您的值表示法中缺少选项的组成部分。

    以下应起作用:

    myBicycle Bicycle ::= {
        bicycleColor "Blue",
        bicycleModel "Hero 42M"
    }
    
    person Person ::= {
        name "Rama Krishna",
        id "I123456",
        preferredVehicle bicycle : myBicycle
    }
    
        2
  •  1
  •   rici    6 年前

    我不相信实用程序允许您使用命名的子值。无论如何,该值似乎工作正常:

    person Person ::= {
        name "Rama Krishna",
        id "I123456",
        preferredVehicle bicycle: {
            bicycleColor "Blue",
            bicycleModel "Hero 42M"
        }
    }