首页 > 解决方案 > 所有字符的异或 - 这是什么意思?

问题描述

我需要通过以太网(套接字连接)向设备发送一个字符串。有一个起始位、一个消息内容、一个结束位和一个校验和。校验和被描述为“所有字符的异或”。

我不明白这是什么意思。这是什么意思,我如何用 PHP 生成它?

标签: phpxor

解决方案


校验和是在发送时根据您的输入生成的代码,以便接收方可以使用它来检查数据是否有错误(接收方将生成自己的校验和并将其与您的校验和进行比较,并在他们这样做时引发错误或其他东西不匹配)。

试试这个返回 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);帮助(将十进制转换为十六进制)。


推荐阅读