【php】crc32()の結果は32bit版と64bit版で違う

製作 プログラム

最終更新日:2024/11/05

ラムネグから一言:寝る前に読むとくだらなすぎて逆に寝れると好評なすごい適当なブログをこっちではじめてます.

phpの公式ドキュメントにも載っているんですが、32bit版phpと64pit版phpとでcrc32関数の結果が違います。値が全然合わないんですよね。

PHP の整数型は符号付きで、多くの crc32 チェックサムは 32 ビットシステム上では負の整数になります。 しかし、64 ビット環境では crc32() の結果はすべて正の整数となります。

引用:https://www.php.net/manual/ja/function.crc32.php

なんか色々書かれてるんですが、32ビット版PHPだとマイナスの値に、64ビット版PHPだと正の値になるみたい。

で、時々、というか50%の確率で一緒になることもある、と。

crcってソフトウェアなどを送受信する際の欠損チェックで使われる値なので「合わない事あるんだなぁ」っていうのがけっこうな驚きですよね。

【おしらせ、というか完全なる宣伝】

文体がもうぜんぜん適当すぎてあれだけどものすごい自由に書いてるブログ「檸檬だくだく」もよろしく.寝る前に読める恐ろしくくだらないやつです.

こんなにも一ミリも目を引かれないタイトルを取り扱ってます: ココア20g / ハイチュウとかってさ / なぜ米と小麦を食べようと思ったのかの謎 /