Часть XIII13.2. Простые типыИз встроенных типов ASN.1 прежде всего выделяют набор простых типов. К ним относятся: булевский (BOOLEAN), целочисленный (INTEGER), тип "строка битов" (BIT STRING), тип "строка октетов" (OCTET STRING), пустой тип (NULL), перечислимый тип (ENUMERATED), тип "действительное число" (REAL). В следующей таблице представлены множества значений данных типов.
Абстрактный синтаксис ASN.1 представляет собой средство со строгой типизацией, что требует явного описания используемых типов. Пример определения типа: Employed ::= BOOLEAN Это определение означает, что множество значений типа Employed состоит из двух значений: TRUE или FALSE. Подобным же образом определяется тип для целых значений: CheckingAccountBalance ::= INTEGER При определении целочисленных типов можно указывать идентификаторы поименованных значений, а также максимальные и минимальные значения: DayOfTheMonth ::= INTEGER { first(1), last(31) } -- заданы максимальное и минимальное значения Тип BITSTRING следует использовать для представления двоичных данных, формат и длина которых не заданы, при этом длина (в битах) не обязательно кратна восьми. Пример: G3FacsimilePage ::= BIT STRING -- последовательность битов, удовлетворяющая -- Рекомендации T.4 Можно определять битовые последовательности фиксированных размеров, а также определять совокупности логических значений (каждому элементу совокупности соответствует бит последовательности): SunnyDaysOfTheMonth ::= BIT STRING { first(1), last(31) } -- i-й день солнечный ? i-й бит равен единице Тип OCTET STRING по своему назначению полностью аналогичен типу BIT STRING, позволяя представлять двоичные данные, причем длина (в битах) кратна восьми. Значения типа REAL включают значения PLUS INFINITY и MINUS INFINITY, вместе с действительными числами, которые могут быть представлены в виде MxBE, где целочисленные M, B, E, соответственно, - мантисса, основание и порядок. B принимает значения 2 или 10, M и E - произвольные целые числа. Тип ENUMERATED используется для определения типа с тремя или более выделенными значениями. MaritalStatus ::= ENUMERATED { single(0), married(1), widowed(2) } |