Top.Mail.Ru
Алгоритм пересчёта федерального УНСМ в формат цифровых номеров - ASP

Алгоритм пересчёта федерального УНСМ в формат цифровых номеров

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

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

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

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

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

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

Федеральный УНСМ цифро-буквенного формата состоит из 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-тичную систему счисления

  1. Перевести буквы из 36-ричной системы в 10-тичную, пользуясь ниже приведенной таблицей соответствия букв из 36-ричной системы цифрам в 10-тичной
abcdefghijklmnopqr
101112131415161718192021222324252627
stuvwxyz
2829303132333435
  1. Сложить все произведения каждой цифры числа на основание системы счисления, т.е. на 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», в цифровой формат будет выглядеть следующим образом

1

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

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

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

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

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

 

 

РазрядДелениеЦелое частноеОстаток
724127965072 / 366702212520
6670221252 / 36186172570
518617257 / 365171461
4517146 / 36143656
314365 / 363991
2399 / 36113
111 / 36011 → b

 

 

2412796507210 = b31610036

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

Для вычисления контрольной суммы номера (служебный разряд) требуется сложить суммы вычисления следующей функции для каждого символа номера с 1-го по 10-й.

  1. Сначала для каждого символа номера, начиная с последнего, вычислить код этого символа по кодировке ASCII в соответствии с указанной ниже таблицей.
0123456789RUabcdefg
484950515253545556578285979899100101102103
hijklmnopqrstuvwxyz
104105106107108109110111112113114115116117118119120121122
  1. Из кода каждого символа вычесть 48. Уникальная часть средства маркирования считается в нижнем регистре. Получившееся значение разницы для каждого нечётного символа умножаем на 2, и если получившееся произведение больше 9, то вычитаем из него 9.
  2. Складываем получившиеся значения.
  3. Сумму делим на основание (5 или 10). Если остаток от деления на основание равен нулю, то оставляем 0 и следующий шаг не осуществляется. Контрольная цифра равна 0.
  4. Из основания вычитаем получившийся остаток.

Пример вычисления контрольной суммы номера RU1b3161006

Контрольная сумма в данном номере «6».

  1. Коды символов этого номера в соответствии с таблицей (выделены жирным шрифтом):
    R код 82,
    U код 85,
    1 код 49 и т.д.
  2. 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
  3. 34 + 65+ 1 + 91 +3 +2 +6 +2 + 0 + 0 = 204
  4. 204 mod основание (10) = 4
  5. основание (10) – 4 = 6

Источник: Россельхознадзор

-->

Политика конфиденциальности

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

Принять