基礎となるデータまたはネットワークプログラミングを処理する場合、バイナリと16進数の間で変換する必要性が発生します。幸いなことに、PHPはこのタスクを達成するのに役立つシンプルで使いやすい組み込み関数を提供し、最も一般的に使用されるタスクはbindec()とbase_convert()です。
Bindec()は、バイナリ文字列を小数点に変換するPHPの組み込み関数です。 dex()は、 10進数を16進列に変換できます。これら2つの機能を組み合わせることで、バイナリから16進変換を完了できます。
この例では、 11010110は小数で214に変換され、その後16進数でD6に変換されます。
最初に小数点を回すのが面倒すぎて、次に16進数を超えると思われる場合は、phpのbase_convert()がより直接的な方法を提供します。この関数により、ソースのカーディナリティとターゲットカーディナリティを直接指定することができ、それによりバイナリ変換を迅速に実装できます。
この関数の最初のパラメーターは変換する文字列、2番目のパラメーターは元のバイナリ(ここに2)、3番目のパラメーターはターゲットバイナリ(ここに16)です。
渡されたバイナリ文字列は、法的バイナリ番号(0と1のみを含む)でなければなりません。そうしないと、 bindec()とbase_convert()の両方が予期しない結果を返す場合があります。
base_convert()を使用する場合、戻り値は文字列タイプです。他のバイナリ番号間で16進数が変換され続ける必要がある場合は、タイプ変換に注意を払う必要があります。
数字数を入力する必要がある場合は、 str_pad()関数を使用できます。たとえば、常に2ビットの16進数を出力するには、次のように書くことができます。
この変換は、ネットワークデータパケット、カラーコード(RGB値など)、ビットマップデータなどのシナリオで非常に一般的です。たとえば、バイナリデータストリームを受信する場合、デバッグのために16進数形式で印刷する必要があります。
<Code> $ data = ['11000011'、 '10101010'、 '11110000']; foreach($ data as $ binary){echo strtoupper(base_convert($ binary、2、16))。 ""; } //出力:C3 AA F0 </code>たとえば、結果を16進状の色として出力することもできます。
<Code> $ r = '11110000'; $ g = '10101010'; $ b = '11000011'; $ hexcolor = '#'。 strtoupper(base_convert($ r、2、16))。 strtoupper(base_convert($ g、2、16))。 strtoupper(base_convert($ b、2、16));エコー$ hexcolor; //出力:#f0aac3 </code>たとえば、リモートインターフェイスからバイナリエンコードデータを取得した場合:
<code> $ response = file_get_contents( 'https://m66.net/api/data/binary'); $ data = json_decode($ response、true); //返されたのは['11001100'、'11110000 '] foreach($ data as $ binary){echo strtoupper(base_convert($ binary、2、16))であると仮定します。 ""; } //出力:CC F0 </code>file_get_contents() 、 json_decode() 、およびbase_convert()を組み合わせることにより、処理と表示のためにバイナリデータを読み取り可能な16進形式にすばやく変換できます。