PHP 生成CRC-8效验
项目用到计算CRC-8算法 查询了PHP相关资料用处很少
那么我们按照C代码翻译一份出来
C CRC8算法
//C CRC8算法
uint8_t crc8(uint8_t *message, uint8_t len)
{
uint8_t crc = 0;
while(len--)
{
crc ^= *message++;
for(uint8_t i = 0; i < 8; i++)
{
if(crc & 0x01)
crc = (crc >> 1) ^ 0x8c;
else
crc >>= 1;
}
}
return crc;
}
PHP 实现CRC8算法
function crc8(array $ar, $len = false)
{
if (!$len) $len = count($ar);
$crc = 0;
for ($i = 0; $i < $len; $i++) {
$crc = $crc ^ $ar[$i];
for ($n = 0; $n < 8; $n++) {
if ($crc & 1) {
$crc = ($crc >> 1) ^ 0x8c;
} else {
$crc >>= 1;
}
}
}
return $crc;
}
## PHP十六进制计算CRC-8
```php
$packet = "A5A50100020000";
$resultHex=BytesToHex(crc8(HexTobytes($packet)));
var_dump($resultHex);
//结果
string(2) "84"
附带源码(内有十六进制转byte数组 互转代码)
下载地址:https://download.csdn.net/download/sept_jun/18865747