Форумы портала PHP.SU » PHP » Программирование на PHP » Помогите с расчетом CRC16_KERMIT

Страниц (1): [1]
 

1. dimpase - 28 Мая, 2018 - 17:15:24 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. function crc16_kermit($string) {
  3.  
  4.    $crc = 0;
  5.    for ( $x=0; $x<strlen( $string ); $x++ ) {
  6.  
  7.      $crc = $crc ^ ord( $string[$x] );
  8.      for ($y = 0; $y < 8; $y++) {
  9.  
  10.         if ( ($crc & 0x0001) == 0x0001 ) $crc = ( ($crc >> 1 ) ^ 0x1021 );
  11.          else                             $crc =    $crc >> 1;
  12.       }
  13.    }
  14.  
  15.    $lb  = ($crc & 0xff00) >> 8;
  16.    $hb  = ($crc & 0x00ff) << 8;
  17.    $crc = $hb | $lb;
  18.    //$crc = $lb | $hb;
  19.  
  20.    return $crc;
  21. }
  22.  


Входные данные hx ( 02030630 )

Тут https://www[dot]lammertbies[dot]nl/comm/[dot][dot][dot]calculation[dot]html
считает правильно, контрольная сумма получается 0x41B3, но при использовании функции выше, я не получаю такого результата.
Так же проверял контрольную сумму здесь ([url ]http://crccalc.com/[/url]), тоже правильно.

Алгоритм : CRC-16/KERMIT
У меня получается 46615. Или это число нужно еще во что то перевести?

Еще класс с гитхаба скачал там 6337 получается (((

 

Powered by ExBB FM 1.0 RC1