![]() |
В общем суть в следующем – нужен алгоритм, желательно с исходным кодом на Visual С++ для коррекции ошибок в некой записи. Т.е. есть набор байтов, нужно добавить в них какую-либо информацию (кроме их дублирования) по которой можно бы было проверить целостность информации и, в случае искажения, с достаточно высокой точностью восстановить ее.
Большая просьба ответить поскорее или хотя бы дать ссылки, где это можно почитать. Да, и еще CRC на ассемблере не предлагать :) |
Господа, поактивнее – скоро надо уже сдавать курсяк, а у меня еще практически ничего не готово!!!
|
Drey
Всё зависит от того, что требуется - восстановить покарёженные данные или только обнаружить ошибку. Вообще, почитайте про групповые и рекуррентные коды, там всё не просто, а очень просто. Можно и про циклические почитать, там математика немного сложнее (хотя, при кодировании она как бы не очень требуется). Литературы полно. Точнее задачу ставьте, в общем. И вообще, курсовики самому писать надо. |
Циклические коды это и есть CRC вообще-то…
Курсяк я пишу всегда сам, просто в этот раз задачу усложнили за две недели до сдачи и купить и прочитать книжку, а главное ее понять я уже не успею, поэтому и прошу помочь с поиском готовых алгоритмов на C++, либо их кратких и понятных описаний. А где почитать-то, линк дай пожалуйста! Суть задачи еще раз: есть последовательность байтов (произвольное количество), необходимо добавить к ним необходимое количество данных (в пределах разумного), необходимых для обнаружения и коррекции ошибок, которые могут возникнуть по каким-либо причинам. |
Опять же очень важно знать какие могут возникнуть ошибки. Т.е. будут ли они одиночные, двойные смежные, двойные независимые итд. На сколько я помню теорию, абсолютно в любом случае мы сможем составить соответствующий код.
На счёт CRC, я просто привык, что этим сокращением обозначают CRC-32 контрольные суммы. И как-то не задумывался откуда оно пошло. Собственно, первая проверка показала, что этим сокращением (CRC - Cyclic Redundancy Code) обозначают именно контрольную сумму, вычисляемую помошью деления полиномов, и более ничего. Кстати, гугл рулит. Вот реализация кода (26,12) (на 26 передаваемых бит - 12 информационных, т.е. размер сообщения увеличивается вдвое, что для обеспечиваемой им коррекции [[5 независимых ошибок]] очень даже неплохо): http://the-art-of-ecc.com/3_Cyclic_BCH/RBDS.c На этом же сайте дофига примеров реализации других кодов. Там же в ссылках есть теория. Добавлено: На счёт того, что в любом случае можно составить соответствующий код, я пожалуй погорячился. |
Я еще не прочитал, но заранее большое спасибо… кстати у тебя классный сайт :)
Добавлено: А такого же чуда на русском случайно нету? |
Время: 00:40. |
Время: 00:40.
© OSzone.net 2001-