PHP crc16

PHP CRC16校验

php
1.先把需要检验的字符串转化成数组

public function getbytes($str) {

        $len = strlen($str);
        $bytes = array();
        for($i=0;$i<$len;$i++) {
            if(ord($str[$i]) >= 128){
                $byte = ord($str[$i]) - 256;
            }else{
                $byte = ord($str[$i]);
            }
            $bytes[] =  $byte ;
        }
        return $bytes;
    }

2 把数组带入crc16 检验

 public function CRC16_Checkout($puchMsg)
    {
        $crc_reg = 0xFFFF;
        for($i=0;$i<count($puchMsg);$i++)
        {	
            $crc_reg = ($crc_reg>>8)^$puchMsg[$i];
            for($j=0;$j<8;$j++)
            {
                $check = $crc_reg & 0x0001;
                $crc_reg >>= 1;
                if($check==0x0001) 
                {
                    $crc_reg ^= 0xA001;
                }
            }
        }
        
        return $crc_reg;
    } 

版权声明:本文为weixin_43231173原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。