php - 所有字符的异或 - 这是什么意思?
问题描述
我需要通过以太网(套接字连接)向设备发送一个字符串。有一个起始位、一个消息内容、一个结束位和一个校验和。校验和被描述为“所有字符的异或”。
我不明白这是什么意思。这是什么意思,我如何用 PHP 生成它?
解决方案
校验和是在发送时根据您的输入生成的代码,以便接收方可以使用它来检查数据是否有错误(接收方将生成自己的校验和并将其与您的校验和进行比较,并在他们这样做时引发错误或其他东西不匹配)。
试试这个返回 XOR 校验和的方法:
function GetCheckSum($str)
{
$r = 0;
for ($i = 0; $i < strlen($str); $i++) {
$o = ord(substr($str, $i, 1));
$r = $r ^ $o;
}
return $r;
}
如果它对您不起作用,可能会更改return $r;
为return dechex($r);
帮助(将十进制转换为十六进制)。
推荐阅读
- javascript - 找出 Discord webhooks 链接的正则表达式
- javascript - 如何使用 Jquery 验证 Unbounce 平台的单选按钮?
- amazon-web-services - 如何手动将 compose 构建的图像推送到 ECR?
- java - Android Studio 应用程序在尝试将记录插入数据库时崩溃,错误消息没有意义
- r - R:从 tar.gz 目录中读取单个文件
- javascript - 无限列表和分页公式
- javascript - 自定义 Javascript 未在 Revolution Slider 中加载
- process - 调度实时系统 vs 在线系统 vs 批处理系统
- java - 在@param 中传递的 HQL 检查列表大小
- python - 为什么这个非平稳序列被 python 中的 adfuller 测试诊断为平稳?