gpt4 book ai didi

php - 如何计算 PHP HEX 中的 CRC16 CCITT?

转载 作者:可可西里 更新时间:2023-10-31 23:19:31 26 4
gpt4 key购买 nike

我正在尝试使用 PHP CRC16 CCITT 函数来计算校验和。

一个设备向我发送一个包含校验和的数据包:

10 00 00 00 00 00 00 00 12 51 09 08 00 18 00 04 02 14 00 0c 00 0c 02 1c 00 02 00 00 00 00 00 00 a0 77

校验和在最后:a0 77

我试过

How to calculate crc16 in php

Convert C to PHP for CRC16 Function

没有成功,CRC 16 计算返回:E6 F4 而不是 a0 77

当我查找时,我返回了正确的十六进制信息:

100000000000000012510908001800040214000c000c021c0002000000000000

在网站上http://www.lammertbies.nl/comm/info/crc-calculation.html但我无法复制它。 (一定要选择输入类型为HEX)

你能帮我弄清楚如何得到十六进制值字符串的crc16 CCITT吗

100000000000000012510908001800040214000c000c021c0002000000000000

我正在寻找校验和 a0 77

最佳答案

我能够通过如下实现生成相同的校验和:

define('CRC16POLYN', 0x1021);

function CRC16Normal($buffer) {
$result = 0xFFFF;
if (($length = strlen($buffer)) > 0) {
for ($offset = 0; $offset < $length; $offset++) {
$result ^= (ord($buffer[$offset]) << 8);
for ($bitwise = 0; $bitwise < 8; $bitwise++) {
if (($result <<= 1) & 0x10000) $result ^= CRC16POLYN;
$result &= 0xFFFF;
}
}
}
return $result;
}

echo dechex(CRC16Normal(hex2bin('100000000000000012510908001800040214000c000c021c0002000000000000')));

上面给出了输出的a077

https://forums.digitalpoint.com/threads/php-define-function-calculate-crc-16-ccitt.2584389/ 上找到的代码片段

关于php - 如何计算 PHP HEX 中的 CRC16 CCITT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30035582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com