我开始使用pyasn1库,我有一个关于如何在SEQUENCE OF对象中设置默认值的问题。我的 ASN1 结构如下:
Asn1Def DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
CasinoPlayer ::= SEQUENCE
{
name UTF8String (SIZE(1..16)),
luckyNumbers SEQUENCE (SIZE(3)) OF INTEGER DEFAULT {7,7,7}
}
END
我了解如何使用namedtype.DefaultedNamedType
对象并使用子类型在CasinoPlayer
序列中创建 DEFAULT 字段SIZE
但是我应该如何初始化默认值 {7,7,7}?
谢谢
我认为它应该看起来像这样:
class CasinoPlayer(Sequence):
componentType = NamedTypes(
NamedType(
'name',
UTF8String(
ConstraintsIntersection(
ValueSizeConstraint(1, 16)
)
)
),
DefaultedNamedType(
'luckyNumbers',
SequenceOf(
componentType=Integer(),
sizeSpec=ConstraintsIntersection(
ValueSizeConstraint(3, 3)
)
).setComponentByPosition(0, 7)
.setComponentByPosition(1, 7)
.setComponentByPosition(2, 7)
)
)
另外,您可能需要将标签分配给每个 ASN.1 类型(正如自动标签子句所暗示的那样(。
更新:
实际上,这应该有效,但事实并非如此!幸运的是,有一个修复程序应该使默认SequenceOf
传播到Sequence
字段,只要它是DefaultedNamedType
。