ASN.1 如何使用 CHOICE 类型
ASN.1 How to use CHOICE type
我设计了如下模式。
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
}
谁能告诉我我的架构和数据有什么问题。
我认为实用程序不允许您使用命名的子值。无论如何,这个值似乎工作正常:
person Person ::= {
name "Rama Krishna",
id "I123456",
preferredVehicle bicycle: {
bicycleColor "Blue",
bicycleModel "Hero 42M"
}
}
您的值表示法中缺少 CHOICE 的组成部分。
以下应该有效:
myBicycle Bicycle ::= {
bicycleColor "Blue",
bicycleModel "Hero 42M"
}
person Person ::= {
name "Rama Krishna",
id "I123456",
preferredVehicle bicycle : myBicycle
}
我设计了如下模式。
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
}
谁能告诉我我的架构和数据有什么问题。
我认为实用程序不允许您使用命名的子值。无论如何,这个值似乎工作正常:
person Person ::= {
name "Rama Krishna",
id "I123456",
preferredVehicle bicycle: {
bicycleColor "Blue",
bicycleModel "Hero 42M"
}
}
您的值表示法中缺少 CHOICE 的组成部分。
以下应该有效:
myBicycle Bicycle ::= {
bicycleColor "Blue",
bicycleModel "Hero 42M"
}
person Person ::= {
name "Rama Krishna",
id "I123456",
preferredVehicle bicycle : myBicycle
}