选项的ENUMERATED替代值的值表示法

时间:2018-04-27 14:10:07

标签: asn.1

遵守以下规范

virtualenv <your_project_path>/venv

我认为使用cb付款的价值表示法是:

source venv/bin/activate

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

我的价值有什么问题?

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

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

2 个答案:

答案 0 :(得分:1)

您是否错过了值表示法中的credit-card.type字段?由于cb属于属于type一个的credit-card字段。

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

答案 1 :(得分:1)

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

我通过将模块切换到IMPLICIT标签然后只写下了我希望它解释的十六进制来实现:

3080
  0A0100
  12143030303030303030303030303030303030303030
  1206303132303939
  0000