ホームページ  >  記事  >  バックエンド開発  >  PHPソケットプログラミングXOR演算

PHPソケットプログラミングXOR演算

WBOY
WBOYオリジナル
2016-06-13 12:21:551330ブラウズ

PHP ソケットプログラミング XOR 演算ヘルプ

図のように、Socket プログラミングを行う際には XOR 演算を使用し、コードの一部を添付します。しかし、ここでそのような問題に遭遇しました。この画像は XOR 演算の結果です。よく見ると、笑顔は 1 で、空白の位置は 0 です。 XOR は自身で計算された値、REVC_XOR は受信した (正しいと思われる) XOR 値です。長さは 8 ビットです。
正しい XOR メソッドのコード、またはこの問題の解決方法を教えてください。

<br />	$check = str_split($verify_data, 2);  // 将16进制数据转换成两个一组的数组<br />	for ($j = 0; $j < count($check); $j++) {<br />		$data = str_pad(base_convert($check[$j],16,2),8,0,STR_PAD_LEFT);<br />		$xor = $xor ^ $data;<br />		$xor = str_pad($xor,8,0,STR_PAD_LEFT);<br />	}<br /><br />	echo "XOR:" . $xor . "\r\n";<br />	echo "REVC_XOR:" . $revc_xor . "\r\n\r\n";<br />

ここで、$verify_data は bin2hex(socket_read($msgsock,8192,PHP_BINARY_READ)) から渡される 16 進数の文字列です。
ありがとうございます
-----解決策のアイデア----------------------
$s = '81000000003e900000000000000010001031323334353632';<br />$a = unpack('C*', pack('H*', $s));<br />$x = 29;<br />foreach($a as $v) $x ^= $v;<br />printf('%08b', $x);
00000111

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。