ホームページ > バックエンド開発 > PHPチュートリアル > PHPのcrc32関数を使用する際の注意点_PHPチュートリアル

PHPのcrc32関数を使用する際の注意点_PHPチュートリアル

WBOY
リリース: 2016-07-13 09:56:34
オリジナル
879 人が閲覧しました

phpのcrc32関数を使用する際に注意すべき問題

この記事では主にphpのcrc32関数を使用する際に注意すべき問題(そうでないと落とし穴になります)を紹介します。必要な人は参照してください

数日前にテーブル分割プログラムを書きました。使用されるハッシュ アルゴリズムは次のとおりです。

コードをコピーします。コードは次のとおりです:

関数_getHash($username)

{

$hash = crc32($username) % 512;

$hash を返す;

}

関数_getTable($username)

{

$hash = self::_getHash($username);

「user_」を返します。

}

まずローカルの32ビットウィンドウマシン上でデータを生成し、対応するテーブルに挿入します。しかし、プログラムとデータをサーバー (Linux の場合は 64) に転送すると、データが見つからないことがわかりました。調査の結果、サーバー上の crc32 の結果がローカルの結果と異なることが判明しました。 PHPのマニュアルを再度確認したところ、crc32インターフェースがこのマシンに関係していることが分かりました。

PHPマニュアルの説明:

コードをコピーします。コードは次のとおりです:

PHP の整数型は署名されているため、多くの crc32 チェックサムは 32 ビット プラットフォームでは負の整数になりますが、64 ビット インストールではすべての crc32() の結果は正の整数になります。

crc32で返される結果は32ビットマシンではオーバーフローするため、結果が負の数になる可能性があります。 64 ビット マシンではオーバーフローがないため、常に正になります。

CRCアルゴリズムは語長のビット数に基づいて計算されます。

crc32関数は、phpの2つの定数参照に従ってPHP_INT_SIZEとPHP_INT_MAXを計算します

これら 2 つの定数の定義:

整数の語長はプラットフォームに依存しますが、通常の最大値は約 20 億 (32 ビット符号付き) です。 PHP は符号なし整数をサポートしていません。整数値の語長は定数 PHP_INT_SIZE で表すことができます。PHP 4.4.0 および PHP 5.0.5 以降では、最大値は定数 PHP_INT_MAX で表すことができます。

次の 32 ビットを出力 PHP_INT_SIZE: 4、PHP_INT_MAX: 2147483647

64 ビット モードでの出力 PHP_INT_SIZE: 8、PHP_INT_MAX: 9223372036854775807

http://www.bkjia.com/PHPjc/987718.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/987718.html技術記事 phpのcrc32関数を使用する際に注意する必要がある問題 この記事では、phpのcrc32関数を使用する際に注意する必要がある問題を主に紹介します(そうしないと落とし穴になります)。数日前…
関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート