Во-первых, обратите внимание, что ваша спецификация недействительна ... вы должны добавить АВТОМАТИЧЕСКИЕ ТЕГИ
HelloWorld DEFINITIONS AUTOMATIC TAGS ::= BEGIN
DataItems ::= SEQUENCE (SIZE (0..1024)) OF DataItem
DataItem ::= SEQUENCE {
name IA5String (SIZE (0..32)) OPTIONAL,
address IA5String (SIZE (0..256)) OPTIONAL
}
END
Причина в том, что вы не можете определить разницу между name
и address
при декодировании (какони оба необязательны).
Что касается вашего вопроса, ресурс, который я использую для быстрого ответа, - https://asn1.io/asn1playground/
Несколько примеров:
value DataItems ::= {
{ name "one" },
{ name "two" },
{ name "three" }
}
-- Encoded successfully in 14 bytes:
-- 00707BF7 6583E9DF 7C2F4D1C B2E5
value DataItems ::= {
{ name "one", address "one" },
{ name "two", address "two" },
{ name "three", address "three" }
}
-- Encoded successfully in 27 bytes:
-- 00787BF7 6501EFDD 970FA77D E03E9DF7 E2F4D1CB 2E502F4D 1CB2E5