PHPでは、 HexDec関数は、ヘックス弦を対応する小数値に変換する一般的に使用される組み込み関数です。使用は非常に簡単です:
<?php
$decimal = hexdec("1a3f");
echo $decimal; // 出力 6719
?>
ただし、 HEXDECには、HEX文字列を扱う際の範囲と制限があり、プログラムのエラーやデータの混乱を避けるためにこれらを理解することが不可欠です。
HexDecは、法的六分位式であるべき文字列パラメーターを受け入れます。この関数は、文字列の先頭に16進数の数値文字(0-9、AF、AF)を解析し、最初の非ヘキシマル文字が停止し、対応する10進整数を返します。文字列の前に0xまたは0xがある場合、それも認識されます:
<?php
echo hexdec("0x1a3f"); // 6719
echo hexdec("1a3fxyz"); // 6719,その後の非ヘキシマル文字は無視されます
echo hexdec("xyz1a3f"); // 0,初めに非ヘキシマル文字を返します0
?>
純粋な16進数文字で構成される文字列<br> たとえば、「1A3F」、「FF12」、「0XABC」( 0xプレフィックスの有無にかかわらず)は正しく変換できます。
文字列は、16進数文字<br>で開始する必要があります HexDecは、文字列が有効な16進数文字で始まる場合にのみ変換されます。
たとえば、「ABCD123」→「ABCD123」の前に、最初の非ヘキサデシマル文字が停止するまで、16進数文字を特定します。
ケースを無視してください<br> 文字列の文字は大文字または小文字であり、ヘックスデックは正しく処理できます。
文字列には非ヘキサデシマル文字が含まれており、<br>で始まります たとえば、「G123」、「XYZ」、これらの文字列は非ヘックス文字から始まり、 HexDecは直接0を返します。
スペースまたはその他のセパレーターを備えた16進数文字列
Hexdecはスペースやデリミターをスキップしません。たとえば、「1A 3F」は、スペースに遭遇するために変換を停止し、「1A」部分にのみ変換されます。
非常に長い16進文字列
HexDecによって返される値は、浮動小数点数です。非常に大きな16進数を扱う場合、精度の損失があります。 BCMATHまたはGMP拡張機能を使用して、多数を処理することをお勧めします。
<?php
echo hexdec("0x1a3f") . "\n"; // 6719
echo hexdec("1A3F") . "\n"; // 6719
echo hexdec("1a3fxyz") . "\n"; // 6719,非ヘキシマルテール文字を無視します
echo hexdec("xyz1a3f") . "\n"; // 0,最初の違法なキャラクター,変換できません
echo hexdec("1a 3f") . "\n"; // 26,スペースに遭遇するのをやめます,回転するだけです1a
?>
HexDecは、 0倍でプレフィキをかけることができるが、中間スペースや違法な文字を持つことができない16進数から始まる連続文字のシーケンスである必要があることを処理するのに適した文字列。
非ヘキサデシマルの文字に遭遇すると、解析が停止し、非ヘキシマル文字が最初にある場合、0が戻ります。
数値範囲の外側にある大きな16進列の文字列の場合、 HexDecは正確に処理できず、特別な数の処理機能を使用する必要があります。
上記の機能を理解することは、 HexDec関数を使用してHEX文字列をより正確に処理し、データ変換の予期しないエラーを回避するのに役立ちます。