2012-04-18 76 views
0

我有以下代碼:

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

您是否看到過有關'bindec'參數的PHP文檔警告,如果不是字符串,可能會導致「意外的結果」?你可以'var_dump($ val)'?文檔:http://us2.php.net/bindec – 2012-04-18 00:48:49

+0

我做了,我檢查了「fread」的文檔頁面,它說它返回一個字符串...我認爲這可能是我的困惑產生的原因。 'bin2hex'和'hexdec'都表示它們也接受字符串。 – Alex 2012-04-18 00:54:30

回答

1

在第一行中使用ord()函數代替bindec()bindec()需要一個只包含10的輸入字符串,如「110101」。它不會將「真實」的二進制數據作爲輸入。

0

哎呀,誤解了你的問題是什麼:P

Bindec消費二進制的實際字符串,你給它一個正常的數字。

相關問題