Алгоритм преобразования УНСМ из федерального формата в цифровой.

В целях увеличения объема номеров при неизменном количестве символов в формат федерального уникального номера средства маркирования (УНСМ) введены буквы. Однако не все электронные средства маркирования могут его поддерживать.

В этой связи Россельхознадзор публикует алгоритм пересчёта федерального УНСМ в формат чисто цифровых номеров, поддерживаемый некоторыми электронными средствами маркирования.

Пока Служба продолжит выдавать УНСМ цифро-буквенного формата. Для «вшивания» таких номеров в электронные средства маркирования, которые поддерживают только цифровой формат, их необходимо будет сначала перевести в этот цифровой формат по приведенной ниже схеме.

В дальнейшем в Хорриоте будет реализован функционал по автоматическому перекодированию цифро-буквенных УНСМ в цифровые и обратно – из цифровых в цифро-буквенные. При заказе цифровых УНСМ Россельхознадзор будет выдавать цифро-буквенные номера и указывать их цифровые аналоги. В карточке животных/групп животных будет добавлена поддержка обоих форматов номеров одновременно.

До реализации изложенных функций в системе необходимо вносить только номер, который был выдан изначально, т.е. номер федерального цифро-буквенного формата.

При добавлении поддержки нового цифрового формата в Хорриот для электронных носителей поддержка цифро-буквенного формата не будет прекращена и будет работать в полном объёме.

Федеральный УНСМ цифро-буквенного формата состоит из 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 × 36⁶) + (3 × 36) + (1 × 36⁴) + (6 × 36³) + (1 × 36²) + (0 × 36¹) + (0 × 36⁰) = 23944605696 + 181398528 + 1679616 + 279936 + 1296 + 0 + 0 = 24127965072.

Следовательно, число «b316100» в 36-ричной системе = числу «24127965072» в 10-тичной системе.

Таким образом, перевод цифро-буквенного УНСМ для индивидуального маркирования животного, в котором уникальная часть состоит из числа «b316100», в цифровой формат будет выглядеть следующим образом:

Алгоритм для преобразования числа из 10-тичной системы счисления в 36-ричную

Данный алгоритм необходим для проверки корректности перевода федерального цифро-буквенного УНСМ в цифровой формат.

Чтобы перевести целое положительное десятичное число в другую систему счисления (например, в 36-ричную), нужно это число разделить на основание (на 36). Полученное частное снова делить на основание до тех пор, пока частное не окажется меньше основания.

Полученные остатки, являющиеся цифрами числа в новой системе счисления, выражаем цифрами алфавита этой системы. В качестве результата преобразования необходимо записать в одну строку последнее частное и все остатки, начиная с последнего. Полученное значение будет являться результатом преобразования.

Перевод числа 24127965072 из 10-тичной системы счисления в 36-ричную будет выглядеть следующим образом:

Деление Целое частное Остаток
24127965072 / 36 670221252 0
670221252 / 36 18617257 0
18617257 / 36 517146 1
517146 / 36 14365 6
14365 / 36 399 1
399 / 36 11 3
11 / 36 0 11 → b

24127965072 по основанию 10 = b316100 по основанию 36

Схема проверки контрольной суммы на примере цифро-буквенного УНСМ

Для вычисления контрольной суммы номера (служебный разряд) требуется сложить суммы вычисления следующей функции для каждого символа номера с 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

Рассказать коллегам:
Добавить комментарий