PHPのcrc32関数を使用する際の注意点_PHPチュートリアル
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

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー
