A ByteStringis structurally the same as a one-dimensional array of Byte.It is represented as a distinct built-in data type because it allows encoders to optimize the transmission of the value. However, some DevelopmentPlatforms will not be able to preserve the distinction between a ByteStringand a one-dimensional array of Byte.

If a decoderfor DevelopmentPlatform cannot preserve the distinction it shall convert all one-dimensional arrays of Byteto ByteStrings.

Each element in a one-dimensional array of ByteStringcan have a different length which means is structurally different from a two-dimensional array of Byte where the length of each dimension is the same. This means decoders shall preserve the distinction between two or more dimension arrays of Byteand one or more dimension arrays of ByteString.

If a DevelopmentPlatform does not supportunsigned integers, then it will have to represent ByteStringsas arrays of SByte. In this case, the requirements for Bytewould then apply to SByte.