開発では、特に数値システム、データ暗号化、または異なるエンコードシステムとの相互作用を扱う場合、位相変換は一般的な要件です。 PHPは、バイナリの変換を容易にするためのいくつかの組み込み関数を提供します。一般的に使用される2つの関数は、 base_convert()とdeChex()です。これは、異なる数字間で変換できます。この記事では、これらの2つの機能を組み合わせて、位相変換の動作を簡素化する方法について説明します。
まず、これら2つの関数の基本的な機能を理解します。
base_convert($ number、$ from_base、$ to_base) : $ from_baseから$ to_baseに$番号を変換します。サポートされている計算範囲は2〜36です。
dex($ number) :10進数$番号を16進数で表す文字列に変換します。
base_convert()は、異なるバイナリシステム間で変換できる非常に柔軟な関数です。この関数を通じて、開始およびターゲットを絞ったバイナリを指定し、バイナリからオクタル、ヘキサデシマルへのさまざまな形式の変換を処理できます。
たとえば、バイナリ番号を10進数に変換します。
<span><span><span class="hljs-variable">$binary</span></span><span> = </span><span><span class="hljs-string">'1101'</span></span><span>;
</span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$binary</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decimal</span></span><span>; </span><span><span class="hljs-comment">// 出力 13</span></span><span>
</span></span>
10進数を16進数に変換することもできます。
<span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-number">255</span></span><span>;
</span><span><span class="hljs-variable">$hex</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$decimal</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">16</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$hex</span></span><span>; </span><span><span class="hljs-comment">// 出力 ff</span></span><span>
</span></span>
dex()は、10進数に重点を置く関数であり、10進数を16進表現に直接変換します。 base_convert()と比較して、 DeChex()は、特に小数と16進数の間の変換にのみ対処する必要がある場合に、より簡潔です。
たとえば、10進数を16進数に変換します。
<span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-number">255</span></span><span>;
</span><span><span class="hljs-variable">$hex</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dechex</span></span><span>(</span><span><span class="hljs-variable">$decimal</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$hex</span></span><span>; </span><span><span class="hljs-comment">// 出力 ff</span></span><span>
</span></span>
場合によっては、これら2つの関数を使用すると、特に特定のバイナリからヘキサデシマルに直接変換する必要がある場合、バイナリ変換をより効率的に実行できます。たとえば、バイナリ数を16進数に変換する場合は、最初にバイナリを小数に変換してから、小数を16進数に変換することで行うことができます。
<span><span><span class="hljs-variable">$binary</span></span><span> = </span><span><span class="hljs-string">'1101'</span></span><span>;
</span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$binary</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>); </span><span><span class="hljs-comment">// バイナリを最初に10進数に変換します</span></span><span>
</span><span><span class="hljs-variable">$hex</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dechex</span></span><span>(</span><span><span class="hljs-variable">$decimal</span></span><span>); </span><span><span class="hljs-comment">// 次に、小数を16進数に変換します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$hex</span></span><span>; </span><span><span class="hljs-comment">// 出力 d</span></span><span>
</span></span>
この例は、2つのステップからバイナリから直接六cimalの結果を取得する方法を示しています。
三元数から16進数に変換する必要があるとします。最初に三元を小数に変換してから、小数を16進変換することができます。
<span><span><span class="hljs-variable">$ternary</span></span><span> = </span><span><span class="hljs-string">'10212'</span></span><span>; </span><span><span class="hljs-comment">// これは三元数です</span></span><span>
</span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">base_convert</span></span><span>(</span><span><span class="hljs-variable">$ternary</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>); </span><span><span class="hljs-comment">// 最初に三元を小数に変換します</span></span><span>
</span><span><span class="hljs-variable">$hex</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dechex</span></span><span>(</span><span><span class="hljs-variable">$decimal</span></span><span>); </span><span><span class="hljs-comment">// 小数を16進数に変換します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$hex</span></span><span>; </span><span><span class="hljs-comment">// 出力 94</span></span><span>
</span></span>
このプロセスは、組み込み関数を2回呼び出すことにより、複雑な分割変換を完了します。
base_convert()とdechex()を組み合わせることにより、任意からヘキサデシマルへの変換を柔軟に完了できます。 base_convert()は、trancritical変換に広範なサポートを提供しますが、 dexex()は、小数からヘックス変換のための簡潔で効率的なソリューションを提供します。これら2つの機能の組み合わせにより、さまざまな数字間の変換要件を効率的に処理できます。
この記事の導入を通じて、さまざまなシナリオとニーズに応じて分割変換操作を処理するための適切な関数を選択できます。これにより、コードの単純さが向上するだけでなく、開発効率が向上します。