在PHP中计算CRC 16 X25

问题描述 投票:0回答:1

我想弄清楚某些消息的校验和,但我甚至无法从这个链接中获得github文件。https:/github.commeetanthonycrcphp。. 在上述链接的网站工作,但当我运行测试,没有人能够运行CRC16 X25的计算?

php checksum crc
1个回答
0
投票

我发现为什么我的代码是错误的,我传递的是一个十六进制的数字,为了计算,我需要从十六进制转换为十进制,按照函数与适应(hexdec($d)解决了我的问题)。

public function ComputeCrc($crcParams, $data) {
    if ($crcParams->RefIn) {
        $crc = $crcParams->InvertedInit;
    } else {
        $crc = $crcParams->Init;
    }
    if ($crcParams->RefOut) {
        foreach ($data as $d) {
            $d = hexdec($d);
            echo "<br>".$d."<br>";
            $crc = $crcParams->Array[($d ^ $crc) & 0xFF] ^ ($crc >> 8 & 0xFF);
        }
    } else {
        foreach ($data as $d) {
            $crc = $crcParams->Array[(($crc >> 8) ^ $d) & 0xFF] ^ ($crc << 8);
        }
    }

    $crc = $crc ^ $crcParams->XorOut;

    $result = new CrcResult();
    $result->Crc = $crc & 0xFFFF;

    return $result;
}
© www.soinside.com 2019 - 2024. All rights reserved.