Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用php计算CRC16 X25_Php_Crc - Fatal编程技术网

用php计算CRC16 X25

用php计算CRC16 X25,php,crc,Php,Crc,我需要帮助计算CRC X25变量,我有一个Java工具,也有一个在线工具,可以提供正确的转换,但我自己还不能复制它 字符串:4040290003323334C323031373030313839336000000000009001FFFFFF0000D656B759 输入类型:十六进制->计算CRC16 Result: CRC-16/X-25 0x6C49 <-- this is the value im trying to get in php from that string a

我需要帮助计算CRC X25变量,我有一个Java工具,也有一个在线工具,可以提供正确的转换,但我自己还不能复制它

字符串:4040290003323334C323031373030313839336000000000009001FFFFFF0000D656B759 输入类型:十六进制->计算CRC16

Result: CRC-16/X-25 
0x6C49 <-- this is the value im trying to get in php from that string above.
这给了我如下的结果

ComputeCrc(str_split("40402900033231334C323031373030313839360000000000009001FFFFFFFF0000D656B759", 2));
Result = ec71 <-- decHex result

calculate("40402900033231334C323031373030313839360000000000009001FFFFFFFF0000D656B759");
Result = 48d7; <-- decHex result
ComputeCrc(str_split(“4040290003323334c23031373030313839336000000000009001ffffff0000d656b759”,2));

结果=ec71在计算前应用hexdec解决了该问题,可能在将来有用

public static function ComputeCrc($data) {
    $crc = 0xFFFF;

    foreach ($data as $d) {
        $d = hexdec($d); <-- This did the trick
        $crc = self::$CRC16_Table[($d ^ $crc) & 0xFF] ^ ($crc >> 8 & 0xFF);
    }

    $crc = $crc ^ 0xFFFF;
    $crc = $crc & 0xFFFF;

    return $crc;
}
公共静态函数ComputeCrc($data){
$crc=0xFFFF;
foreach($d数据){
$d=hexdec($d);>8&0xFF);
}
$crc=$crc^0xFFFF;
$crc=$crc&0xFFFF;
返回$crc;
}
public static function ComputeCrc($data) {
    $crc = 0xFFFF;

    foreach ($data as $d) {
        $d = hexdec($d); <-- This did the trick
        $crc = self::$CRC16_Table[($d ^ $crc) & 0xFF] ^ ($crc >> 8 & 0xFF);
    }

    $crc = $crc ^ 0xFFFF;
    $crc = $crc & 0xFFFF;

    return $crc;
}