| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
crc32(PHP 4 >= 4.0.1, PHP 5, PHP 7) crc32 — 文字列の crc32 多項式計算を行う 説明
int crc32
( string
$str
)
警告
PHP の整数型は符号付きで、多くの crc32 チェックサムは 32 ビットシステム上では負の整数になります。 しかし、64 ビット環境では crc32() の結果はすべて正の整数となります。 つまり、符号なしの crc32() チェックサムの文字列表記を 十進形式で取得するには、 sprintf() もしくは printf() の "%u" フォーマッタを使う必要があります。 チェックサムの十六進表記を取得するには、sprintf() あるいは printf() の "%x" フォーマッタを使うか、あるいは変換関数 dechex() を使います。これらはいずれも、 crc32() の結果を符号なし整数に変換することも行います。 64 ビット環境でも、返り値が大きくなると負の整数を返すことが考えられます。 その場合は十六進変換がうまくいかないので、負の整数については オフセット 0xFFFFFFFF######## を与えます。 十六進表現は最もよく使われる形式なので、この処理が壊れないようにしました。 32 ビット環境から 64 ビット環境に移したときに ほぼ 50% の確率で十進形式での比較が失敗してしまいますが、 それよりも十六進表記のほうを優先したのです。 今思えば、この関数が整数値を返すようにしたというのがまずい判断でした。 最初から、md5() のように十六進形式の文字列をを直接返すようにしておけばよかったのでしょう。
移植性を考慮した選択肢として、より汎用的な
hash() を使う方法もあります。
パラメータ
返り値
例
例1 crc32 チェックサムの表示 この例は printf() 関数を用いた変換後のチェックサムの表示方法を示しています。
<?php |
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「crc32 - 文字列の crc32 多項式計算を行う」をGoogle検索
|