Hex¶
An xsd:hexBinary is arbitrary binary data in hexadecimal encoding.
-
size_t
exess_hex_decoded_size(size_t length)¶ Return the maximum number of bytes required to decode
lengthbytes of hex.The returned value is an upper bound which is only exact for canonical strings.
- Parameters
length – The number of input (text) bytes to decode.
- Returns
The size of a decoded value in bytes.
-
ExessResult
exess_read_hex(ExessBlob *out, const char *str)¶ Read a binary value from a hex string.
Canonical syntax is an even number of uppercase hexadecimal digits with no whitespace, like “666F6F”. Lowercase hexadecimal is also supported, and all whitespace is skipped when reading.
The caller must allocate a large enough buffer to read the value, otherwise an
ExessStatus.EXESS_NO_SPACEerror will be returned. The required space can be calculated withexess_hex_decoded_size().When this is called, the output blob must have the size of the available buffer in bytes, and a pointer to the buffer. On return, the size will be set to the exact size of the decoded data, which may be smaller than the initial available size. Only these first bytes are written, the rest of the buffer is not modified.
- Parameters
out – The blob to set to the decoded binary data.
str – String to parse.
- Returns
The
countof characters read, and astatuscode.
-
ExessResult
exess_write_hex(size_t data_size, const void *data, size_t buf_size, char *buf)¶ Write a canonical xsd:hexBinary string.
The data is always written in canonical form, as an even number of uppercase hexadecimal digits with no whitespace.
- Parameters
data_size – The size of
datain bytes.data – Data to write to a string.
buf_size – The size of
bufin bytes.buf – Output buffer, or null to only measure.
- Returns
The
countof characters in the output, andstatusExessStatus.EXESS_SUCCESS, orExessStatus.EXESS_NO_SPACEif the buffer is too small.