dec.h - Man Page
Десятичные строки
Synopsis
#include 'bee2/defs.h'
Функции
bool_t decIsValid (const char *dec)
Корректная десятичная строка?
size_t decCLZ (const char *dec)
Число старших нулевых цифр
void decFromU32 (char *dec, size_t count, register u32 num)
Загрузка из числа u32.
u32 decToU32 (const char *dec)
Преобразование в число u32.
char decLuhnCalc (const char *dec)
Вычисление контрольной цифры Луна
bool_t decLuhnVerify (const char *dec)
Проверка контрольной цифры Луна
char decDammCalc (const char *dec)
Вычисление контрольной цифры Дамма
bool_t decDammVerify (const char *dec)
Проверка контрольной цифры Дамма
Подробное описание
Реализовано управление десятичными строками -- словами в алфавите {'0',..,'9'}, которые представляют числа и буферы памяти.
Первый символ (цифра) является старшим, т.е. используется порядок big-endian. Порядок можно изменить с помощью функции strRev().
Реализованы алгоритмы Луна (1954) и Дамма (2004) расчета контрольных цифр десятичной строки. Алгоритм Луна стандартизирован в ISO/IEC 7812.
Характеристики алгоритма Луна (https://en.wikipedia.org/wiki/Luhn_algorithm):
- обнаруживает одиночные ошибки в цифрах;
- обнаруживает все одиночные перстановки соседних цифр, кроме 09 <-> 90;
- обнаруживает все одиночные ошибки в повторных цифрах, кроме 22 <-> 55, 33 <-> 66 и 44 <-> 77.
Алгоритма Дамма (https://en.wikipedia.org/wiki/Damm_algorithm) обнаруживает все одиночные ошибки и перестановки.
Длина строки, контрольная цифра которой проверяется, на 1 больше длины строки, контрольная цифра которой вычисляется. Считается, что контрольная цифра проверяемой строки добавлена справа. Именно так добавляется контрольная цифра Луна к номеру кредитной карты (как правило, 15-значному) и к номеру IMEI (как правило, 14-значному).
Предусловие
Во все функции кроме decIsValid() передаются корректные десятичные строки и буферы памяти.
Функции
size_t decCLZ (const char * dec)
Определяется длина серии из нулевых старших цифр в строке dec.
Возвращает
Длина серии.
- Прим.
CLZ == Count of Leading Zeros
Регулярность
Функция нерегулярна.
- Аргументы
dec десятичная строка
char decDammCalc (const char * dec)
С помошью алгоритма Дамма определяется контрольная цифра десятичной строки dec.
Возвращает
Контрольная цифра.
- Аргументы
dec десятичная строка
bool_t decDammVerify (const char * dec)
С помошью алгоритма Дамма проверяется контрольная цифра, записанная в конце десятичной строки dec.
Возвращает
Признак успеха.
- Аргументы
dec десятичная строка
void decFromU32 (char * dec, size_t count, register u32 num)
Младшие count десятичных цифр числа num преобразуются в десятичную строку [count + 1]dec.
- Аргументы
dec десятичная строка
count число цифр
num число
bool_t decIsValid (const char * dec)
Проверяется корректность десятичной строки dec. Строка считается корректной, если она состоит из символов алфавита {'0',...,'9'}.
Возвращает
Признак корректности.
Регулярность
Функция нерегулярна.
- Аргументы
dec десятичная строка
char decLuhnCalc (const char * dec)
С помошью алгоритма Луна определяется контрольная цифра десятичной строки dec.
Возвращает
Контрольная цифра.
- Аргументы
dec десятичная строка
bool_t decLuhnVerify (const char * dec)
С помошью алгоритма Луна проверяется контрольная цифра, записанная в конце десятичной строки dec.
Возвращает
Признак успеха.
- Аргументы
dec десятичная строка
u32 decToU32 (const char * dec)
Десятичная строка dec преобразуется в число u32.
Возвращает
Искомое число \mod 2^32.
Предупреждения
Возможно переполнение. Проверка отсутствия переполнения: strLen(dec) - decCLZ() < 10 || strLen(dec) - decCLZ() == 10 && strCmp(dec + decCLZ(), "4294967295") <= 0.
- Аргументы
dec десятичная строка
Автор
Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.