1dec.h(3)                   Library Functions Manual                   dec.h(3)
2
3
4

NAME

6       dec.h - Десятичные строки
7
8

SYNOPSIS

10       #include 'bee2/defs.h'
11
12
13   Функции
14       bool_t decIsValid (const char *dec)
15           Корректная десятичная строка?
16       size_t decCLZ (const char *dec)
17           Число старших нулевых цифр
18       void decFromU32 (char *dec, size_t count, register u32 num)
19           Загрузка из числа u32.
20       u32 decToU32 (const char *dec)
21           Преобразование в число u32.
22       char decLuhnCalc (const char *dec)
23           Вычисление контрольной цифры Луна
24       bool_t decLuhnVerify (const char *dec)
25           Проверка контрольной цифры Луна
26       char decDammCalc (const char *dec)
27           Вычисление контрольной цифры Дамма
28       bool_t decDammVerify (const char *dec)
29           Проверка контрольной цифры Дамма
30

Подробное описание

32       Реализовано управление десятичными строками -- словами в алфавите
33       {'0',..,'9'}, которые представляют числа и буферы памяти.
34
35       Первый символ (цифра) является старшим, т.е. используется порядок big-
36       endian. Порядок можно изменить с помощью функции strRev().
37
38       Реализованы алгоритмы Луна (1954) и Дамма (2004) расчета контрольных
39       цифр десятичной строки. Алгоритм Луна стандартизирован в ISO/IEC 7812.
40
41       Характеристики алгоритма Луна
42       (https://en.wikipedia.org/wiki/Luhn_algorithm):
43
44       • обнаруживает одиночные ошибки в цифрах;
45
46       • обнаруживает все одиночные перстановки соседних цифр, кроме 09 <->
47         90;
48
49       • обнаруживает все одиночные ошибки в повторных цифрах, кроме 22 <->
50         55, 33 <-> 66 и 44 <-> 77.
51
52       Алгоритма Дамма (https://en.wikipedia.org/wiki/Damm_algorithm)
53       обнаруживает все одиночные ошибки и перестановки.
54
55       Длина строки, контрольная цифра которой проверяется, на 1 больше длины
56       строки, контрольная цифра которой вычисляется. Считается, что
57       контрольная цифра проверяемой строки добавлена справа. Именно так
58       добавляется контрольная цифра Луна к номеру кредитной карты (как
59       правило, 15-значному) и к номеру IMEI (как правило, 14-значному).
60
61       Предусловие
62           Во все функции кроме decIsValid() передаются корректные десятичные
63           строки и буферы памяти.
64

Функции

66   size_t decCLZ (const char * dec)
67       Определяется длина серии из нулевых старших цифр в строке dec.
68
69       Возвращает
70           Длина серии.
71
72       Прим.
73           CLZ == Count of Leading Zeros
74
75       Регулярность
76           Функция нерегулярна.
77
78       Аргументы
79           dec десятичная строка
80
81   char decDammCalc (const char * dec)
82       С помошью алгоритма Дамма определяется контрольная цифра десятичной
83       строки dec.
84
85       Возвращает
86           Контрольная цифра.
87
88       Аргументы
89           dec десятичная строка
90
91   bool_t decDammVerify (const char * dec)
92       С помошью алгоритма Дамма проверяется контрольная цифра, записанная в
93       конце десятичной строки dec.
94
95       Возвращает
96           Признак успеха.
97
98       Аргументы
99           dec десятичная строка
100
101   void decFromU32 (char * dec, size_t count, register u32 num)
102       Младшие count десятичных цифр числа num преобразуются в десятичную
103       строку [count + 1]dec.
104
105       Аргументы
106           dec десятичная строка
107           count число цифр
108           num число
109
110   bool_t decIsValid (const char * dec)
111       Проверяется корректность десятичной строки dec. Строка считается
112       корректной, если она состоит из символов алфавита {'0',...,'9'}.
113
114       Возвращает
115           Признак корректности.
116
117       Регулярность
118           Функция нерегулярна.
119
120       Аргументы
121           dec десятичная строка
122
123   char decLuhnCalc (const char * dec)
124       С помошью алгоритма Луна определяется контрольная цифра десятичной
125       строки dec.
126
127       Возвращает
128           Контрольная цифра.
129
130       Аргументы
131           dec десятичная строка
132
133   bool_t decLuhnVerify (const char * dec)
134       С помошью алгоритма Луна проверяется контрольная цифра, записанная в
135       конце десятичной строки dec.
136
137       Возвращает
138           Признак успеха.
139
140       Аргументы
141           dec десятичная строка
142
143   u32 decToU32 (const char * dec)
144       Десятичная строка dec преобразуется в число u32.
145
146       Возвращает
147           Искомое число \mod 2^32.
148
149       Предупреждения
150           Возможно переполнение. Проверка отсутствия переполнения:
151           strLen(dec) - decCLZ() < 10 || strLen(dec) - decCLZ() == 10 &&
152           strCmp(dec + decCLZ(), '4294967295') <= 0.
153
154       Аргументы
155           dec десятичная строка
156

Автор

158       Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.
159
160
161
162Библиотека Bee2                 Пт 23 Июн 2023                        dec.h(3)
Impressum