Sponsor:

Your company here — click to reach over 10,000 unique daily visitors

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 шестнадцатеричная строка

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 шестнадцатеричная строка

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 шестнадцатеричная строка

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 шестнадцатеричная строка

Автор

Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.

Info

Вт 23 Янв 2024 00:00:00 Библиотека Bee2