hex.h - Man Page
Шестнадцатеричные строки
Synopsis
#include 'bee2/defs.h'
#include 'bee2/core/safe.h'
Функции
bool_t hexIsValid (const char *hex)
Корректная шестнадцатеричная строка?
void hexUpper (char *hex)
К верхнему регистру
void hexLower (char *hex)
К нижнему регистру
bool_t hexEq (const void *buf, const char *hex)
Совпадает с шестнадцатеричной строкой?
bool_t hexEqRev (const void *buf, const char *hex)
Совпадает с обратной шестнадцатеричной строкой?
void hexFrom (char *dest, const void *src, size_t count)
Кодирование буфера памяти
void hexFromRev (char *dest, const void *src, size_t count)
Обратное кодирование буфера памяти
void hexTo (void *dest, const char *src)
Декодирование буфера памяти
void hexToRev (void *dest, const char *src)
Обратное декодирование буфера памяти
Подробное описание
Реализовано управление шестнадцатеричными строками, которые представляют буферы памяти. Формально шестнадцатеричный формат задан в RFC 4648 как Base16.
Шестнадцатеричная строка -- это слово в алфавите {'0',..,'9','A',...,'F','a',...,'f'}. Символы 'A' и 'a', 'B' и 'b',... считаются эквивалентными. В соответствии с RFC 4648 преимущество отдается прописным символам.
Предусловие
Во все функции, кроме возможно hexIsValid(), передаются корректные шестнадцатеричные строки и буферы памяти.
Функции
bool_t FAST hexEq (const void * buf, const char * hex)
Буфер [strLen(hex) / 2]buf сравнивается с буфером, заданым шестнадцатеричной строкой hex. Первая пара символов hex преобразуется в октет, который сравнивается с первым октетом buf, вторая пара сравнивается со вторым октетом buf и т. д.
- Предусловие
hexIsValid(hex) == TRUE.
Возвращает
Признак совпадения.
Прим.
Сравнение задается следующим псевдокодом:
octet tmp[strLen(hex) / 2]; hexTo(tmp, hex); return memEq(buf, tmp, strLen(hex) / 2);
Регулярность
Имеется ускоренная нерегулярная редакция.
- Аргументы
buf буфер
hex шестнадцатеричная строка
Перекрестные ссылки hexEq().
Используется в hexEq().
bool_t FAST hexEqRev (const void * buf, const char * hex)
Буфер [strLen(hex) / 2]buf сравнивается с буфером, заданым шестнадцатеричной строкой hex. Первая пара символов hex преобразуется в октет, который сравнивается с последним октетом buf, вторая пара сравнивается с предпоследним октетом buf и т.д.
- Предусловие
hexIsValid(hex) == TRUE.
Возвращает
Признак совпадения.
Прим.
Сравнение задается следующим псевдокодом:
octet tmp[strLen(hex) / 2]; hexTo(tmp, hex); memRev(tmp, strLen(hex) / 2); return memEq(buf, tmp, strLen(hex) / 2);
Регулярность
Имеется ускоренная нерегулярная редакция.
- Аргументы
buf буфер
hex шестнадцатеричная строка
Перекрестные ссылки hexEqRev().
Используется в hexEqRev().
void hexFrom (char * dest, const void * src, size_t count)
Буфер [count]src кодируется шестнадцатеричной строкой {2 * count + 1}dest. Первому октету src соответствует первая пара символов dest, второму октету -- вторая пара и т.д.
Предусловие
Буферы dest и src не пересекаются.
- Аргументы
dest строка-приемник
src память-источник
count число октетов
void hexFromRev (char * dest, const void * src, size_t count)
Буфер [count]src кодируется шестнадцатеричной строкой [2 * count + 1]dest. Первому октету src соответствует последняя пара символов dest, второму октету -- предпоследняя пара и т.д.
Предусловие
Буферы dest и src не пересекаются.
- Аргументы
dest строка-приемник
src память-источник
count число октетов
bool_t hexIsValid (const char * hex)
Проверяется корректность шестнадцатеричной строки hex. Строка считается корректной, если она состоит из четного числа символов алфавита {'0',..,'9','A',...,'F','a',...,'f'}.
Возвращает
Признак корректности.
Регулярность
Функция нерегулярна.
- Аргументы
hex шестнадцатеричная строка
void hexLower (char * hex)
Прописные символы строки hex преобразуются в строчные.
- Аргументы
hex [in,out] шестнадцатеричная строка
void hexTo (void * dest, const char * src)
Шестнадцатеричная строка src преобразуется в строку октетов [strLen(src) / 2]dest. По первой паре символов src определяется первый октет dest, по второй паре -- второй октет и т.д.
- Предусловие
hexIsValid(hex) == TRUE.
- Аргументы
dest память-приемник
src строка-источник
void hexToRev (void * dest, const char * src)
Шестнадцатеричная строка src преобразуется в строку октетов [strLen(src) / 2]dest. По последней паре символов src определяется первый октет dest, по предпоследней паре -- второй октет и т. д.
- Предусловие
hexIsValid(hex) == TRUE.
- Аргументы
dest память-приемник
src строка-источник
void hexUpper (char * hex)
Строчные символы строки hex преобразуются в прописные.
- Аргументы
hex [in,out] шестнадцатеричная строка
Автор
Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.