One dimensional*Arrays*are encoded as a sequence of elements preceded by the number of elements encoded as an *Int32*value. If an *Array*is null, then its length is encoded as −1. An *Array*of zero length is different from an *Array*that is null so encoders and decoders shall preserve this distinction.

Multi-dimensional *Arrays*are encoded as an *Int32* *Array*containing the dimensions followed by a list of all the values in the *Array*. The total number of values is equal to the product of the dimensions. The number of values is 0 if one or more dimension is less than or equal to 0. The process for reconstructing the multi-dimensional array is described in 5.2.2.16.