In ‘C’, strings are characterised by the need for a zero terminator to flag the end of the string. They suffer from a number of problems. In particular, they cannot include binary data within them (in case that data includes binary zeroes) and operations on them are, in general, inefficient. ‘C’ strings need to be handled in a different way to binary data, as reflected in the memxxx()
and strxxx()
function groups in the ANSI ‘C’ library.
Descriptors allow strings and binary data to be represented in the same way; this allows the same functions to be used in both cases.
For binary data, the 8 bit descriptors should be used explicitly. The distinction between Unicode and non-Unicode has no meaning for binary data
Note that there is no practical use for explicit 16 bit binary data.