バイナリ値1111
では、生成する必要がありF
ます。
しかし、次のコードでは、別の結果が生成されます。
$answer = bin2hex('1111');
// $answer is 31313131
目的の HEX 表現を正しく取得するにはどうすればよいですか?
バイナリ値1111
では、生成する必要がありF
ます。
しかし、次のコードでは、別の結果が生成されます。
$answer = bin2hex('1111');
// $answer is 31313131
目的の HEX 表現を正しく取得するにはどうすればよいですか?
必要な HEX 表現を取得するには、次のコードを使用できます。
$binary = '1111';
$answer = strtoupper(dechex(bindec($binary)));
echo $answer; // which produces "F"
説明: この関数bin2hex()
は、2 進データを 16 進数ストリング表現に変換するためのものですが、2 進数を表すストリングを 16 進数に変換するためのものではありません。そのため、 と を組み合わせる必要がbindec()
ありdechex()
ます。
注:strtoupper()
オプションです。
代替ソリューション:
PHP は基数を変換するためのよりクリーンな方法を提供します。
$answer = base_convert($binary, 2, 16);
ただし、この関数は精度を失う可能性があります。詳細については、ドキュメントを参照してください。
printf()関数を使用して、目的の 16 進数表現を取得することもできます。
printf('%x', bindec('1111')); # f (lowercased)
printf('%X', bindec('1111')); # F (uppercased)