All generalization and specialization of types is based on an understanding of these four base subclasses. A value of Primitive may be of type Boolean, String, OctetString, BitString, or some kind of Numeric. Under Boolean are the values true and false.
String includes all possible character strings.
OctetString is the domain for sequences of octets, where an octet is defined as an eight bit value. An octet may be considered as a machine independent notion of a typical byte. A bit string may be applicable where the individual bits are meaningful, where the data is composed of bit sequences other than octets, or where a volume of data may be considered as opaque, that is, as simply an arbitrary number of bits. Integer and Real exist under Numeric. Though not shown on Figure 2-2, there are a number of different types of Integer and Real, as described in the definition of Primitive in the previous section.