ホームページ  >  記事  >  バックエンド開発  >  PHP crcチェックコードの計算方法(PHP XOR)を調べる

PHP crcチェックコードの計算方法(PHP XOR)を調べる

WBOY
WBOYオリジナル
2016-06-23 13:48:041159ブラウズ


たとえば、文字列「139c」があり、電卓を使用してチェック コードを計算し、13^9c= を電卓にコピーし、16 進数を使用して 8F が正しいと計算します

PHP を使用して計算します:

echo dechex(0x13^0x9c); //结果为 8f,正确echo "<hr>";$s1 = '0x13';$s2 = '0x9c';echo dechex($s1^$s2);//结果为 0, 错误echo "<hr>";$s3 = '13';$s4 = '9c';echo dechex($s3^$s4); //结果为 0 , 错误



変数に値を代入して結果を計算することは、結果を直接記述することとは異なり、非常に混乱を招きます。 。 。アドバイス、もしくは利用可能な計算関数を教えてください


ディスカッションへの返信(解決策)

PHPのAND or演算 すべての文字列が前後にある場合は、ASCコードでAND orを実行します

$s1 = ' 0x13';
$s2 = '0x9c';

asc に変換して AND を実行すると、
'0' ' 'x' ' 1' ' 3'
00110000 01110001 00110011
^
00110000 01111000 00111001 01100011
--- ---------------------------------------------- ------ -----------
00000000 00000000 00001000 01010000

結果は var_dump(chr(0).chr(0).chr(8).chr(80)) となります。 string(4)"P " である必要があります 3 つの非印刷文字が使用されているため


dechex 変換は、数字 (ASC は 48 から 57 までのみ認識し、その他は認識されません) から末尾または数字以外の文字まで始まります
、結果は 0 です

$s1 = 0x13;$s2 = 0x9c;echo dechex($s1^$s2);
8f
問題ありません

$s1 = '0x13';
$s2 = '0x9c';

$s1 = 0x13; = 0x9c;
これら 2 つは 16 進数です、もちろん違います。

rreee

これは正常です。

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