PHPCRC16校验码的算法怎么使用
时间:2021-07-01 10:21:17
帮助过:24人阅读
PHP CRC16 校验码的算法如何使用
最近用到CRC16,
我现在就是要把 010301180001 算出CRC16的校验码,通过其他工具,可以得到 校验码是 05F1
最后完整的代码就是
01030118000105F1 我现在需要用php程序,写个函数,来计算这个 05F1 , 网上很难找到 php语言中的CRC16 应用实例,昨晚发现php.com官方有这样一个介绍。
http://cn.php.com/manual/en/function.crc32.php
PHP code
I made this code to verify Transmition with Vantage Pro2 ( weather station ) based on CRC16-CCITT standard.
>8) ^ ord($ptr[$i]))] ^ (($crc<<8) & 0x00FFFF);
return $crc;
}
?>
以上的官方的例子, 我怎么把 010301180001 替换到$test里去, 到底是要先转成什么?
请高手帮我把这个 010301180001 应用一下,怎么得出 05F1
谢谢!
------解决方案--------------------
经测试,#1 的代码符合你的要求
测试代码
PHP code
$s = pack('H*', '010301180001');
$t = crc16(s);
printf('=%02x%02x', $t%256, floor($t/256));
------解决方案--------------------
$cs=sprintf('=%02x%02x', $t%256, floor($t/256));