Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизПосоветуйте алгоритм контрольной цифры. Найти похожие ветки
← →
Дмитрий С © (2012-06-20 23:22) [0]Есть некое число, которое пользователь должен ввести от 4 до 8 цифр.
Это число должно дополняться 1-2 цифрами исключающих (максимально насколько это возможно) ошибочный ввод.
Как например это делается со EAN-13 штрихкодом.
← →
wl © (2012-06-20 23:26) [1]посмотри http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%D0%A5%D0%B5%D0%BC%D0%BC%D0%B8%D0%BD%D0%B3%D0%B0
подойдёт?
← →
palva © (2012-06-20 23:29) [2]Контрольная цифра служит для проверки правильности написания цифровой части ISBN и вычисляется следующим образом: каждая цифра, входящая в состав ISBN умножается на числовой весовой коэффициент - от 10 до 2. Результаты умножений на весовые коэффициент складываются. Сумма произведений делится на модуль 11 - (постоянный делитель). Из модуля 11 вычитается остаток от деления, который и является контрольной цифрой. Если остатка нет, контрольной цифрой является 0, если остаток 10, он записывается как X. Hапример: Цифровая часть: 505000746 Весовые коэффициенты, расположенные в порядке убывания: 10 9 8 7 6 5 4 3 2 Результаты умножения на весовые коэффициенты: 50 0 40 0 0 0 28 12 12 Сумма произведений: 50 + 40+ 28 + 12 + 12 = 142 Сумма делится на модуль 142: 11 = 12 + остаток 10 Из модуля вычитается остаток 10: 11-10=1 Результат - контрольная цифра 1 Таким образом, полный ISBN будет: 5-05-000746-1
← →
Sha © (2012-06-20 23:43) [3]http://ru.wikipedia.org/wiki/Алгоритм_Верхоффа
http://en.wikibooks.org/wiki/Algorithm_Implementation/Checksums/Verhoeff_Algorithm
← →
DVM © (2012-06-20 23:50) [4]А обычный CRC8 не подойдет разве?
← →
Sha © (2012-06-21 00:03) [5]> DVM
если надо одной десятичной цифрой,
то круче, чем Verhoeff, не получится
← →
Дмитрий С © (2012-06-21 02:07) [6]
> wl © (20.06.12 23:26) [1]
Какой-то слишком сложный, с ходу не поймешь то что нужно или нет.
> Sha © (20.06.12 23:43) [3]
А вот это то что надо:) На PHP клево есть, еще на JS надо будет сделать:)
← →
Дмитрий С © (2012-06-21 02:07) [7]Спасибо.
← →
Inovet © (2012-06-21 02:23) [8]В ПФР так проверяется.
1. Алгоритм формирования контрольного числа Страхового номера
Проверка контрольного числа Страхового номера проводится только для номеров больше номера 001–001–998
Контрольное число Страхового номера рассчитывается следующим образом:
• каждая цифра Страхового номера умножается на номер своей позиции (позиции отсчитываются с конца)
• полученные произведения суммируются
• сумма делится на 101
• последние две цифры остатка от деления является Контрольным числом.
Например: Указан страховой номер 112–233–445 95
Проверяем правильность контрольного числа:
цифры номера 1 1 2 2 3 3 4 4 5
номер позиции 9 8 7 6 5 4 3 2 1
1х9+1х8+2х7+2х6+3х5+3х4+4х3+4х2+5х1=95
95 / !101! =95
Контрольное число=95 – указано верно
Некоторые частные случаи:
99 / !101! =99
100 / !101! =00
101 / !101! =00
102 / !101! =01
← →
ДимкаНа (2012-06-21 02:43) [9]Цифры две, а качество хуже. С ходу можно пример с ошибкой в 1 цифре или с перестановкой придумать
← →
Германн © (2012-06-21 03:36) [10]
> ДимкаНа (21.06.12 02:43) [9]
>
> Цифры две, а качество хуже. С ходу можно пример с ошибкой
> в 1 цифре или с перестановкой придумать
А ты думал, что "контрольные суммы" гарантируют хоть что-то?
← →
Германн © (2012-06-21 03:45) [11]Если это не стандартный алгоритм, то я плюсую к DVM © (20.06.12 23:50) [4]
Имхо самый надёжный (но естественно не гарантирующий) алгоритм.
← →
Дмитрий С © (2012-06-21 11:08) [12]
> А ты думал, что "контрольные суммы" гарантируют хоть что-
> то?
Смотри что гарантирует:
http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%92%D0%B5%D1%80%D1%85%D0%BE%D1%84%D1%84%D0%B0#.D0.94.D0.BE.D1.81.D1.82.D0.BE.D0.B8.D0.BD.D1.81.D1.82.D0.B2.D0.B0_.D0.B8_.D0 .BD.D0.B5.D0.B4.D0.BE.D1.81.D1.82.D0.B0.D1.82.D0.BA.D0.B8
Плохо что таких данных по CRC8 нет
← →
DVM © (2012-06-21 11:37) [13]
> Дмитрий С © (21.06.12 11:08) [12]
> Плохо что таких данных по CRC8 нет
CRC8 потому что много разных, у каждого свои характеристики и заточены они под разные ошибки:
CRC8ATM
CRC8ITU
CRC8ROHC
CRC8DARC
CRC8ICODE
CRC8J1850
CRC8MAXIM
CRC8WCDMA
CRC8CCITT
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.075 c