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 16bit binary data.