Php 为什么对bindec($val)的调用不会返回与hexdec(bin2hex($val))相同的结果?

Php 为什么对bindec($val)的调用不会返回与hexdec(bin2hex($val))相同的结果?,php,Php,我有以下代码: <?php $val = fread($fp,1); echo 'bindec: '.bindec($val)."\n"; echo 'bin2hex: '.bin2hex($val)."\n"; echo 'bin2hex/hexdec: '.hexdec(bin2hex($val))."\n"; ?> 我的问题是,为什么bindec返回0?当然它应该返回15?哦,误解了你的问题是什么:p Bindec消耗一个实际的二进制字符串,您给它一个正常的数字。使用函数,而

我有以下代码:

<?php
$val = fread($fp,1);
echo 'bindec: '.bindec($val)."\n";
echo 'bin2hex: '.bin2hex($val)."\n";
echo 'bin2hex/hexdec: '.hexdec(bin2hex($val))."\n";
?>

我的问题是,为什么
bindec
返回
0
?当然它应该返回
15

哦,误解了你的问题是什么:p


Bindec消耗一个实际的二进制字符串,您给它一个正常的数字。

使用函数,而不是第一行中的
Bindec()
bindec()
需要一个只包含
1
0
的输入字符串,如“110101”。它不接受“真实”二进制数据作为输入。

您是否看到PHP文档中关于
bindec
参数的警告,如果不是字符串,则可能导致“意外结果”?你能
var\u dump($val)
?Docs:我做了,我检查了文档页面的
fread
,上面说它返回一个字符串。。。我想这可能就是我困惑的原因
bin2hex
hexdec
都表示它们也接受字符串。
bindec: 0
bin2hex: 0f
bin2hex/hexdec: 15