プログラミングプロセス中に、多くの場合、16進数を10進数に変換する必要があるシナリオに遭遇します。時には、16進数の長さが期待を満たしておらず、出力の長さが固定されていることを確認するためにゼロを補充する必要がある場合があります。 PHPは、強力な組み込み関数HexDecとSTR_PADを提供します。これは、このタスクを簡単に達成するのに役立ちます。この記事では、これら2つの機能の組み合わせにより、16進数変換とビット充填操作を完了する方法を詳細に紹介します。
HexDecは、ヘックス弦を小桁整数に変換するPHPの関数です。 16進数文字列を入力として受け入れ、対応する小数値を返します。
<span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hexdec</span></span><span>(</span><span><span class="hljs-string">'1A'</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">// 出力 26</span></span><span>
</span></span>
上記のように、 Hexdec( '1a')は六十種類'1a'を小数26に変換します。
STR_PAD関数は、指定された長さまで文字列を入力するために使用されます。文字列がターゲットの長さよりも小さい場合、デフォルトでスペースを使用して、指定されたパディング文字に基づいて補足します。数値出力の固定長を確保するために使用できます。
<span><span><span class="hljs-variable">$padded</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-string">'123'</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$padded</span></span><span>; </span><span><span class="hljs-comment">// 出力 00123</span></span><span>
</span></span>
この例では、 str_padは文字列「123」を長さ5の文字列に記入し、ゼロでパッドし、弦の左にゼロを追加します。
ここで、16進数を小数に変換し、出力小数点が固定された長さであることを確認する必要があります。たとえば、16進数'1a'を小数に変換し、5桁の数値として出力し、ゼロでパディングが不十分な場合があります。
HexDecとSTR_PAD関数を組み合わせることで、これを達成できます。
<span><span><span class="hljs-variable">$hex</span></span><span> = </span><span><span class="hljs-string">'1A'</span></span><span>; </span><span><span class="hljs-comment">// これは16進数です</span></span><span>
</span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hexdec</span></span><span>(</span><span><span class="hljs-variable">$hex</span></span><span>); </span><span><span class="hljs-comment">// 小数に変換します</span></span><span>
</span><span><span class="hljs-variable">$fixedLengthDecimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-variable">$decimal</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT); </span><span><span class="hljs-comment">// 固定長の充填</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fixedLengthDecimal</span></span><span>; </span><span><span class="hljs-comment">// 出力 00026</span></span><span>
</span></span>
Hexdec($ hex)は「1a」を小数26に変換します。
str_pad($ decimal、5、 '0'、str_pad_left)は26を長さ5の文字列に埋め、塗りつぶし文字は「0」で、文字列の左側に記入します。したがって、出力は「00026」です。
このようにして、出力の長さを柔軟に調整できます。たとえば、出力の長さを8ビットまたは必要なものに変更することができます。STR_PADの長さパラメーターを調整するだけです。
<span><span><span class="hljs-variable">$hex</span></span><span> = </span><span><span class="hljs-string">'1A'</span></span><span>; </span><span><span class="hljs-comment">// 16進数</span></span><span>
</span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hexdec</span></span><span>(</span><span><span class="hljs-variable">$hex</span></span><span>); </span><span><span class="hljs-comment">// 小数に変換します</span></span><span>
</span><span><span class="hljs-variable">$fixedLengthDecimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-variable">$decimal</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT); </span><span><span class="hljs-comment">// ASを埋めます8少し</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fixedLengthDecimal</span></span><span>; </span><span><span class="hljs-comment">// 出力 00000026</span></span><span>
</span></span>
このようにして、単純なパラメーター調整で異なる要件を満たすことができます。
HexDecとStr_Padを組み合わせることにより、16進数を固定長の10進数に簡単に変換できます。 HexDecはヘックスを10進数に処理するために使用されますが、 STR_PADは数値数字の出力の数が要件を満たすことを保証する責任があります。このようにして、小数を扱っているか多数を扱うかどうかにかかわらず、桁の補足を簡単に実現して、出力の標準化を確保することができます。