ASN.1如何使用CHOICE类型

时间:2018-02-07 04:54:54

标签: asn.1

我设计了我的架构,如下所示。

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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

以下内容应该有效:

Parcelable