PHP中的bin2hex提供了不正确的答案

PHP中的bin2hex提供了不正确的答案,php,Php,对于二进制值1111,它应该生成F 但使用以下代码,它会产生其他结果: $answer = bin2hex('1111'); // $answer is 31313131 如何正确获得所需的十六进制表示 要获得所需的十六进制表示,我们可以使用以下代码: $binary = '1111'; $answer = strtoupper(dechex(bindec($binary))); echo $answer; // which produces "F" 说明:函数bin2hex()用于将二进

对于二进制值
1111
,它应该生成
F

但使用以下代码,它会产生其他结果:

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

如何正确获得所需的十六进制表示

要获得所需的十六进制表示,我们可以使用以下代码:

$binary = '1111';
$answer = strtoupper(dechex(bindec($binary)));

echo $answer; // which produces "F"
说明:函数
bin2hex()
用于将二进制数据转换为十六进制字符串表示形式,但不用于将表示二进制数字的字符串转换为十六进制。这就是为什么我们需要组合
bindec()
dechex()

注意:
strtoupper()
是可选的


替代解决方案:

PHP提供了一种更简洁的转换数字基的方法:

$answer = base_convert($binary, 2, 16);

但是,此函数可能会失去精度。有关更多信息,请参阅。

要获得所需的十六进制表示,我们可以使用以下代码:

$binary = '1111';
$answer = strtoupper(dechex(bindec($binary)));

echo $answer; // which produces "F"
说明:函数
bin2hex()
用于将二进制数据转换为十六进制字符串表示形式,但不用于将表示二进制数字的字符串转换为十六进制。这就是为什么我们需要组合
bindec()
dechex()

注意:
strtoupper()
是可选的


替代解决方案:

PHP提供了一种更简洁的转换数字基的方法:

$answer = base_convert($binary, 2, 16);
但是,此函数可能会失去精度。有关更多信息,请参阅。

您还可以使用函数获取所需的十六进制表示形式:

printf('%x', bindec('1111')); # f (lowercased)
printf('%X', bindec('1111')); # F (uppercased)
您还可以使用函数获取所需的十六进制表示形式:

printf('%x', bindec('1111')); # f (lowercased)
printf('%X', bindec('1111')); # F (uppercased)

好主意,还可以使用
sprintf()
将输出保存到变量。好主意,还可以使用
sprintf()
将输出保存到变量。您认为它意味着双数而不是原始数据。对模棱两可的函数名的误解真的是这样一个常见的问题吗?它真正的用途仍然是;具体来说,你认为它是指双数而不是原始数据。对模棱两可的函数名的误解真的是这样一个常见的问题吗?它真正的用途仍然是;具体来说。