Пятница, 19.04.2024, 12:43
Приветствую Вас Гость

LabSoft

Меню сайта
Категории каталога
Статьи по кодингу [24]
Материалы по кодингу
КреатиFF [144]
Рассказы, истории, анекдоты...
Разное [8]
Советы, трюки, полезные рекомендации, статьи о новом и забытом старом...
Наш опрос
Какой язык программирования Вы используете?
Всего ответов: 40
Главная » Статьи » Статьи по кодингу

Вычисляем CRC5 и CRC16 для битовых последовательностей.
Протокол USB использует циклический избыточный код (CRC - Cyclic Redundancy Checksums) для защиты полей пакета. Этот контроль является более мощным средством для обнаружения ошибок на уровне блоков данных. CRC- контроль представляет в своем роде алгоритм хэширования.

Алгоритм 16-разрядной контрольной суммы:
* В 16-битный регистр загружается число $FFFF;
* Добавляются байты сообщений к текущему содержимому регистра по "Исключающему ИЛИ". Используются 8 бит данных.
* Сдвигаем 16-битный регистр вправо на 1 бит;
* Смотрим младший байт, если =0, то повтор сдвига; если =1, то делаем операцию "Исключающее ИЛИ" и полиноминального числа $А001;
* Повторяем до тех пор, пока все байты не будут обработаны.

//сдвиг битовой строки
function fshl(var s:string):char;
begin
Result:=s[1];
Delete();
S:=s+'0';
end;

//ксорим битовые строки
procedure pXor (var s:string; str:string);
var
i:byte;
begin
for i:=1 to Length(str) do
begin
if s[i]=str[i] then
s[i]:='0' else
s[i]:='1'
end;
end;

//CRC16
procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
i:byte;
Result:string;
begin
Result:='1111111111111111';
s:=Edit3.text;
for i:=1 to length(s) do
if s[i]<>fshl(result) then
pxor(result,'1000000000000101');
pxor(result,'1111111111111111');

Edit4.text:=result;
end;

//CRC5
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i:byte;
Result:string;
begin
Result:='11111';
s:=Edit1.text;
for i:=1 to length(s) do
if s[i]<>fshl(result) then
pxor(result,'00101');
pxor(result,'11111');

Edit2.text:=result;
end;

Категория: Статьи по кодингу | Добавил: Jimmy (28.01.2008) | Автор: Unknown
Просмотров: 1476 | Комментарии: 1 | Рейтинг: 4.0/1 |
Всего комментариев: 1
1 Jimmy  
0
Может исходник выложу....

Имя *:
Email *:
Код *:
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0