我有以下代码:
<?php
$val = fread($fp,1);
echo 'bindec: '.bindec($val)."\n";
echo 'bin2hex: '.bin2hex($val)."\n";
echo 'bin2hex/hexdec: '.hexdec(bin2hex($val))."\n";
?>
正在读取的字节在我的十六进制编辑器中显示为0F
。我的输出如下:
bindec: 0
bin2hex: 0f
bin2hex/hexdec: 15
我的问题是,为什么bindec
会返回0
?当然应该返回15
?
答案 0 :(得分:1)
在第一行使用ord()
功能代替bindec()
。 bindec()
要求输入字符串仅包含1
或0
,如“110101”。它不会将“真正的”二进制数据作为输入。
答案 1 :(得分:0)
Bindec会消耗一个实际的二进制字符串,你给它一个正常的数字。