遇到一個 ASN.1 語法敘述,查到在討論群有人問一樣的問題:[ASN.1] TYPE-IDENTIFIER.&Type是甚麼意思?
例如:
X ::= SEQUENCE
{
a INTEGER, -- stuff...
b BOOLEAN
}
Z ::= SEQUENCE
y TYPE-IDENTIFIER.&Type (X)
}
則表示 "y" MUST be of type "X" only. 意思同於
Z ::= SEQUENCE
{
y OCTET STRING (CONTAINING X)
}
這種表示法適用表示於當資料 y 以 PER Encode 後的狀態。舉例說明:
T.38 Annex A ---ASN.1 Notation 可見到
UDPTLPacket ::= SEQUENCE
{
seq-number INTEGER (0..65535),
primary-ifp-packet TYPE-IDENTIFIER.&Type(IFPPacket),
error-recovery CHOICE
{
secondary-ifp-packets SEQUENCE OF TYPE-IDENTIFIER.&Type(IFPPacket),
fec-info SEQUENCE
{
fec-npackets INTEGER,
fec-data SEQUENCE OF OCTET STRING
}
}
}
我們限定 primary-ifp-packet 必須是經過 PER Encode 之後的 IFPPacket, 還有
secondary-ifp-packets 也是連續的 PER Encode 過的 octets stream. 唯有用
"TYPE-IDENTIFIER.&Type" 語法,才能表示出來。
更多的說明,可參考:
"Communications Between Heterogenus Systems" by Oliver Dubuisson, or
"ASN.1 Complete" by John Larmouth
#
沒有留言:
張貼留言