Россельхознадзор размещает алгоритм перекодирования номеров средств маркирования для электронных средств маркирования, которые не поддерживают федеральный формат номеров
Вниманию госветслужб субъектов Российской Федерации,
Хозяйствующих субъектов – владельцев животных,
IT-компаний, разрабатывающих сервисы
для животноводов, ветеринарии, хозяйствующих
субъектов – владельцев животных
В целях увеличения объема номеров при неизменном количестве символов в формат федерального уникального номера средства маркирования (УНСМ) введены буквы. Однако не все электронные средства маркирования могут его поддерживать.
В этой связи Россельхознадзор публикует алгоритм пересчёта федерального УНСМ в формат чисто цифровых номеров, поддерживаемый некоторыми электронными средствами маркирования.
Пока Служба продолжит выдавать УНСМ цифро-буквенного формата. Для «вшивания» таких номеров в электронные средства маркирования, которые поддерживают только цифровой формат, их необходимо будет сначала перевести в этот цифровой формат по приведенной ниже схеме.
В дальнейшем в Хорриоте будет реализован функционал по автоматическому перекодированию цифро-буквенных УНСМ в цифровые и обратно – из цифровых в цифро-буквенные. При заказе цифровых УНСМ Россельхознадзор будет выдавать цифро-буквенные номера и указывать их цифровые аналоги. В карточке животных/групп животных будет добавлена поддержка обоих форматов номеров одновременно.
До реализации изложенных функций в системе необходимо вносить только номер, который был выдан изначально, т.е. номер федерального цифро-буквенного формата.
При добавлении поддержки нового цифрового формата в Хорриот для электронных носителей поддержка цифро-буквенного формата не будет прекращена и будет работать в полном объёме.
Федеральный УНСМ цифро-буквенного формата состоит из 11 символов и имеет следующий вид: RU[1-2][a-z0-9]{7}[0-9]
а) первые два разряда заполняются заглавными буквами – «RU», показывающими, что животные подвергнуты учету в Российской Федерации;
б) третий разряд заполняется цифрой «1» или «2»:
- «1» в случае, если животное подвергнуто индивидуальной идентификации;
- «2» в случае, если животное подвергнуто групповой идентификации;
в) 7 символов с четвертого по десятый разряды заполняются уникальной последовательностью цифр и строчных английских букв (если УНСМ был выдан до мая 2021, то с четвертого по десятый разряды состоят только из цифр);
г) одиннадцатый разряд является служебным и содержит контрольную сумму (далее – КС), вычисленную для всего номера (с 1-го символа по 10-й) по алгоритму «Схема проверки контрольной суммы» с основанием 10.
После преобразования в цифровой формат федеральный УНСМ будет состоять из 15 символов и будет иметь следующий вид: 643[1-2][0-9]{11}
а) первые три разряда заполняются цифрами «643», показывающими, что животные подвергнуты учету в Российской Федерации;
б) четвертый разряд заполняется цифрой контрольной суммы, вычисленной для уникальной части номера (символы с 5-го по 15-й) по алгоритму «Схема проверки контрольной суммы» с основанием 5 и следующими дополнениями
- в случае, если животное подвергнуто индивидуальной идентификации – оставить цифру без изменений;
- в случае, если животное подвергнуто групповой идентификации – добавить 5;
в) 11 символов с пятого по пятнадцатый разряды заполняются уникальной последовательностью цифр.
Уникальная часть номера средства маркирования цифро-буквенного формата в текстовом представлении представляет собой алфавит и цифры от 0 до 9: «0123456789abcdefghijklmnopqrstuvwxyz», что соответствует 36-ричной системе счисления.
Уникальная часть номера средства маркирования цифрового формата представляет собой цифры от 0 до 9, что соответствует 10-тичной системе счисления.
Для внесения УНСМ в текстовом формате на носитель необходимо преобразовать уникальную часть номера средства маркирования цифро-буквенного формата из 36-ричной системы счисления в 10-тичную.
Алгоритм для преобразования числа из 36-ричной в 10-тичную систему счисления
Перевести буквы из 36-ричной системы в 10-тичную, пользуясь ниже приведенной таблицей соответствия букв из 36-ричной системы цифрам в 10-тичной
a b c d e f g h i j k l m n o p q r
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
s t u v w x y z
28 29 30 31 32 33 34 35
Сложить все произведения каждой цифры числа на основание системы счисления, т.е. на 36, в степени соответствующего разряда каждой цифры числа. Первый разряд соответствует степени 0, второй – степени 1, третий – степени 2 и т.д.
Пример перевода числа b316100 из 36-ричной в 10-тичную систему.
Складываем все произведения каждой цифры числа на 36 в степени соответствующего разряда каждой цифры числа.
Разряды цифр числа «b316100» в соответствии с таблицей справа налево следующие: «0» - 1 разряд; «0» - 2 разряд; «1» - 3 разряд; «6» - 4 разряд; «1» - 5 разряд; «3» - 6 разряд; «11» - 7 разряд.
Учитывая, что первый разряд соответствует степени 0, второй – степени 1, третий – степени 2 и т.д., получаем следующее:
(11 × 366) + (3 × 365) + (1 × 364) + (6 × 363) + (1 × 362) + (0 × 361) + (0 × 360) = 23944605696 + 181398528 + 1679616 + 279936 + 1296 + 0 + 0 = 24127965072.
Следовательно, число «b316100» в 36-ричной системе = числу «24127965072» в 10-тичной системе.
Таким образом, перевод цифро-буквенного УНСМ для индивидуального маркирования животного, в котором уникальная часть состоит из числа «b316100», в цифровой формат будет выглядеть следующим образом
Алгоритм для преобразования числа из 10-тичной системы счисления в 36-ричную
Данный алгоритм необходим для проверки корректности перевода федерального цифро-буквенного УНСМ в цифровой формат.
Чтобы перевести целое положительное десятичное число в другую систему счисления (например, в 36-ричную), нужно это число разделить на основание (на 36). Полученное частное снова делить на основание до тех пор, пока частное не окажется меньше основания.
Полученные остатки, являющиеся цифрами числа в новой системе счисления, выражаем цифрами алфавита этой системы. В качестве результата преобразования необходимо записать в одну строку последнее частное и все остатки, начиная с последнего. Полученное значение будет являться результатом преобразования.
Перевод числа 24127965072 из 10-тичной системы счисления в 36-ричную будет выглядеть следующим образом:
Разряд Деление Целое частное Остаток
7 24127965072 / 36 670221252 0
6 670221252 / 36 18617257 0
5 18617257 / 36 517146 1
4 517146 / 36 14365 6
3 14365 / 36 399 1
2 399 / 36 11 3
1 11 / 36 0 11 → b< <2412796507210 = b31610036Схема проверки контрольной суммы на примере цифро-буквенного УНСМ
Для вычисления контрольной суммы номера (служебный разряд) требуется сложить суммы вычисления следующей функции для каждого символа номера с 1-го по 10-й.
Сначала для каждого символа номера, начиная с последнего, вычислить код этого символа по кодировке ASCII в соответствии с указанной ниже таблицей.
0 1 2 3 4 5 6 7 8 9 R U a b c d e f g
48 49 50 51 52 53 54 55 56 57 82 85 97 98 99 100 101 102 103
h i j k l m n o p q r s t u v w x y z
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
Из кода каждого символа вычесть 48. Уникальная часть средства маркирования считается в нижнем регистре. Получившееся значение разницы для каждого нечётного символа умножаем на 2, и если получившееся произведение больше 9, то вычитаем из него 9.
Складываем получившиеся значения.
Сумму делим на основание (5 или 10). Если остаток от деления на основание равен нулю, то оставляем 0 и следующий шаг не осуществляется. Контрольная цифра равна 0.
Из основания вычитаем получившийся остаток.
Пример вычисления контрольной суммы номера RU1b3161006
Контрольная сумма в данном номере «6».
Коды символов этого номера в соответствии с таблицей (выделены жирным шрифтом):
R код 82,
U код 85,
1 код 49 и т.д.
R = 82 – 48 = 34
U = 85 – 48 = 37 *2 - 9 = 65
1 = 49 – 48 = 1
b = 98 – 48 = 50 * 2 – 9 = 91
3 = 51 – 48 = 3
1 = 49 – 48 = 1 * 2 = 2
6 = 54 – 48 = 6
1 = 49 – 48 = 1 * 2 = 2
0 = 48 – 48 = 0
0 = 48 – 48 = 0 * 2 = 0
34 + 65+ 1 + 91 +3 +2 +6 +2 + 0 + 0 = 204
204 mod основание (10) = 4
основание (10) – 4 = 6
Оставить сообщение: