0

バイナリ値1111では、生成する必要がありFます。

しかし、次のコードでは、別の結果が生成されます。

$answer = bin2hex('1111');
// $answer is 31313131

目的の HEX 表現を正しく取得するにはどうすればよいですか?

4

2 に答える 2

4

必要な 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);

ただし、この関数は精度を失う可能性があります。詳細については、ドキュメントを参照してください。

于 2013-11-08T04:40:28.000 に答える
1

printf()関数を使用して、目的の 16 進数表現を取得することもできます。

printf('%x', bindec('1111')); # f (lowercased)
printf('%X', bindec('1111')); # F (uppercased)
于 2013-11-08T04:53:13.627 に答える