0

具有以下规格

G-011 DEFINITIONS AUTOMATIC TAGS ::= 
BEGIN 
Payment-method ::= CHOICE {
  check        NumericString(SIZE (15)),
  credit-card  Credit-card,
  cash         NULL
}

Credit-card ::= SEQUENCE {
  type         Card-type,
  number       NumericString(SIZE (20)),
  expiry-date  NumericString(SIZE (6))-- MMYYYY -- 
}

Card-type ::= ENUMERATED {
  cb(0), visa(1), eurocard(2), diners(3), american-express(4)
}

END

我认为用 cb 付款的价值符号是:

value Payment-method ::= credit-card : cb

但是,http://asn1-playground.oss.com/无法解析此值

我的价值观有什么问题?

编辑:我的错,我没有仔细阅读规范(感谢@Ilya)

value Payment-method ::= credit-card : { 
    type cb, 
    number "01234567890123456789", 
    expiry-date "042018"}
4

2 回答 2

1
value Payment-method ::= credit-card : 
{
    type cb,
    number "00000000000000000000",
    expiry-date "012099"
}

我通过将模块切换到隐式标记并只写下我希望它解释的十六进制来得到它:

3080
  0A0100
  12143030303030303030303030303030303030303030
  1206303132303939
  0000
于 2018-04-27T15:30:05.413 回答
1

您是否缺少credit-card.type值符号中的字段?因为cb属于type属于credit-card一个的领域。

在更一般的说明中,ENUMERATED 类型只是一堆命名整数,而 CHOICE 是可用于值的类型的有限集合。

于 2018-04-27T14:45:24.713 回答