Sponsor:

Your company here, and a link to your site. Click to find out more.

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):

Алгоритма Дамма (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 из исходного текста.

Info

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