![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() кусок программы для создания контрольной суммы . Оказывается С не так понятен :-((((
unsigned Hash(char Byte, char nbit, unsigned CRC) { for (int i = 0; i < nbit; i++, Byte <<= 1) { if ( ( Byte ^ (CRC>>8) ) & 0x80 ) { CRC <<= 1; CRC ^= 0x8F57; } else CRC <<= 1; } return CRC; } |
#2
|
|||
|
|||
![]() Вроде так. C++ под рукой нету, посчитать контрольный пример не могу.
Код:
function Hash(AByte, NBit: Byte; CRC: Cardinal): Cardinal; var i: Integer; begin for i := 0 to NBit - 1 do begin if ((AByte xor (CRC shr 8)) and $80) <> 0 then begin CRC := CRC shl 1; CRC := CRC xor $8F57; end else CRC := CRC shl 1; AByte := AByte shl 1; end; Result := CRC; end; |