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

时间:2012-04-18 00:42:31

标签: php

我有以下代码:

<?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

2 个答案:

答案 0 :(得分:1)

在第一行使用ord()功能代替bindec()bindec()要求输入字符串仅包含10,如“110101”。它不会将“真正的”二进制数据作为输入。

答案 1 :(得分:0)

哎呀,误解了你的问题:P

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