使用二进制值1111
,它应该生成F
。
但是使用以下代码,它会产生其他结果:
$answer = bin2hex('1111');
// $answer is 31313131
如何正确获得所需的HEX表示?
答案 0 :(得分:4)
要获得所需的HEX表示,我们可以使用以下代码:
$binary = '1111';
$answer = strtoupper(dechex(bindec($binary)));
echo $answer; // which produces "F"
说明:函数bin2hex()
用于将二进制数据转换为十六进制字符串表示形式,但不用于将表示二进制数字的字符串转换为十六进制数字。这就是我们需要合并bindec()
和dechex()
。
注意:strtoupper()
是可选的。
替代解决方案:
PHP提供了一种更简洁的方式来转换数字基础:
$answer = base_convert($binary, 2, 16);
但是,此功能可能会失去精确度。有关详细信息,请参阅documentation。
答案 1 :(得分:1)
您还可以使用printf()函数来获取所需的十六进制表示:
printf('%x', bindec('1111')); # f (lowercased)
printf('%X', bindec('1111')); # F (uppercased)