CRC8-Check in PHP

Как я могу сгенерировать контрольную сумму CRC-8 в PHP?

Solutions Collecting From Web of "CRC8-Check in PHP"

function crcnifull ($dato, $byte) { static $PolyFull=0x8c; for ($i=0; $i<8; $i++) { $x=$byte&1; $byte>>=1; if ($dato&1) $byte|=0x80; if ($x) $byte^=$PolyFull; $dato>>=1; } return $byte; } function crc8 (array $ar,$n=false) { if ($n===false) $n=count($ar); $crcbyte=0; for ($i=0; $i<$n; $i++) $crcbyte=crcnifull($ar[$i], $crcbyte); return $crcbyte; } 

Чтобы использовать эту функцию для двоичной строки, вам нужно сначала преобразовать двоичную строку в массив. Это может быть достигнуто следующим образом:

 function sbin2ar($sbin) { $ar=array(); $ll=strlen($sbin); for ($i=0; $i<$ll; $i++) $ar[]=ord(substr($sbin,$i,1)); return $ar; } 

Пример использования всего:

 $crc8=crc8(sbin2ar($packet)); 

Это должен быть CRC8?

На PHP.net существует действительно простая реализация CRC16 и собственной версии CRC32 .

Если это должен быть CRC8, я бы рекомендовал кодировать что-то из sudo-кода на странице википедии, о которой указывал Мариус.