php - 在 PHP 中计算 CRC 16 X25
问题描述
我试图找出某些消息的校验和,但我什至无法从此链接https://github.com/meetanthony/crcphp获取 github 文件。在上面链接的站点中有效,但是当我运行测试时,没有人能够运行 CRC16 X25 的计算?
解决方案
我发现为什么我的代码有问题,我传递了一个十六进制的数字并计算,我需要从十六进制转换为十进制,跟随函数适应( 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;
}
推荐阅读
- elixir - 如何在 Elixir 中为自定义类型的数组实现字符串协议?
- c# - 在 C# REST API 中限制上传文件的大小
- ios - 如何使用 Accelerate 的线性插值
- javascript - 我应该如何更新通过道具发送给父级的子组件中的数据
- python - 将变量从 Django 模板传递给视图
- python - 如何使 Python 将序列视为 1 索引而不是 0 索引?
- sparql - RDFox 守护进程端口
- python - 如何使用 PyQt5 在图像上用画笔画线
- macos - 如何在MacOS中创建一个droplet(拖放)(go)程序?
- arrays - 如何在 MATLAB 乘法中使用 .*?