XOR всех персонажей - что это значит? - PullRequest
0 голосов
/ 14 октября 2019

Мне нужно отправить строку на устройство через Ethernet (соединение через сокет). Существует начальный бит, содержимое сообщения, конечный бит и контрольная сумма. Контрольная сумма описывается как «XOR всех символов».

Я не понимаю, что это значит. Что это значит и как мне сгенерировать его с помощью PHP?

1 Ответ

2 голосов
/ 14 октября 2019

Контрольная сумма - это код, сгенерированный на основе вашего ввода при отправке, чтобы принимающая сторона могла использовать его для проверки данных на наличие ошибок (принимающая сторона сгенерирует свою собственную контрольную сумму и сравнит ее с вашей, и выдаст ошибку или что-то в этом роде). когда они не совпадают).

Попробуйте этот метод, который возвращает контрольную сумму 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); помогает (который преобразует десятичное в шестнадцатеричное).

...