インターネットの普及により、私たちの生活はますますインターネットと密接に関係しており、ネットワークの発展にはさまざまなプログラミング言語も重要な役割を果たしています。中でも、PHP はネットワーク開発で広く使われているスクリプト言語として知られており、使用する開発者も増えています。ただし、実際の開発では16進数変換関数を使用する必要が生じることが多く、PHP自体は10進数、16進数、8進数、2進数への変換メソッドのみを提供しており、16進数への変換は提供していません。次に、PHP が 16 進数に変換する機能をどのように実装しているかを見てみましょう。
その前に、16 進数とは何かを理解する必要があります。 Base 62 は、数値または文字を Base 62 に変換する基本システムです。Base 62 は、数字と大文字と小文字で構成されます。0 ~ 9 は数字を表し、A ~ Z は大文字を表し、a ~ z は小文字を表します。 16 進数は、短縮 URL や大規模データ ストレージなどの分野で広く使用されています。
次の手順に従って、php を 16 進数に変換する関数を実装できます:
1. 16 進数に含まれる文字を定義します
最初に、文字を定義する必要があります。 16 進法に含まれるセットには、数字 0 ~ 9、大文字 A ~ Z、および小文字 a ~ z の合計 62 文字が含まれます。以下に示すように、文字列を使用してこれらの文字を保存できます:
$chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
2. 変換関数を定義します
次に、次のことを行う必要があります。 10 進数を 16 進数に変換する関数を定義します。この関数は、最初に数値に対して剰余演算と除算演算を実行し、剰余を 62 桁の文字セットにマップして文字を取得し、商を次の入力として使用する必要があります。商が 0 になるまでこのプロセスを繰り返し、最終的に取得される文字列は 16 進表現になります。コードは次のとおりです。
functionbase62_encode($number)
{
global $chars; $base = 62; $index = ''; do { $mod = $number % $base; $index .= $chars[$mod]; $number = ($number - $mod) / $base; } while ($number > 0); return $index;
}
この例では、base62 を 62 に設定し、グローバル変数 $chars の文字セット。ループでは、まず数値に対して剰余演算と除算演算を実行し、剰余を文字セットにマップして対応する文字を見つけ、それを文字列 $index の末尾に接続します。次に、商を次の入力として使用し、商が 0 になるまでこのプロセスを継続し、最終的な文字列を返します。
3. 逆変換関数の定義
62 進数と 10 進数の間で変換する必要があるため、62 進数を 10 進数に変換する関数も定義する必要があります。の数。この関数は、文字列を右から左に走査し、各文字を取り出し、62 ベースの文字セット内での位置を取得し、62 の累乗を乗算して結果に加算する必要があります。コードは次のとおりです。
functionbase62_decode($index)
{
global $chars; $base = 62; $length = strlen($index); $number = 0; for ($i = 0; $i < $length; $i++) { $number += strpos($chars, $index[$i]) * pow($base, $length - $i - 1); } return $number;
}
この例では、16 進数の基数も 62 に設定します。文字セットをグローバル変数 $chars に保存します。ループ内では、文字列を右から左にトラバースし、各文字を取り出し、strpos 関数を使用して文字セット内の位置を取得し、それを 62 乗して、結果を $number に累積します。最後に $number を返します。
4. テスト関数
最後に、これら 2 つの関数が適切に動作するかどうかをテストします。 rand 関数を使用してランダムな 10 進数を生成し、それを基数 62 に変換し、次に基数 10 に変換して、最後に 2 つの数値を比較して等しいかどうかを確認できます。コードは次のとおりです:
$number = rand(1, 1000000);
$index =base62_encode($number);
$decode =base62_decode($index);
echo 'number: ' . $number . PHP_EOL;
echo 'index: ' . $index . PHP_EOL;
echo 'decode: ' . $decode . PHP_EOL;
上記を実行しますコード。ランダムに生成された 10 進数、16 進数に変換された文字列、および 10 進数に再度変換された後に得られる数値を参照してください。
まとめると、文字セット、変換関数、逆変換関数を定義し、テストを行うことで、10進数を62桁の数値に変換する機能を実現しました。この変換では正の整数のみを処理できることに注意してください。入力が負の数または 0 の場合、変換結果は空の文字列になります。実際の開発では、特定のニーズに応じて変更および適応させる必要があります。
以上がphpを16進数に変換するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。