在PHP中, bindec()函數用於將二進製字符串轉換為十進制數字。它的基本用法非常簡單,傳入一個純二進製字符串(由0和1組成),即可返回對應的十進制整數。
例如:
<code> <?php echo bindec('1011'); // 輸出11 ?> </code>然而,如果傳入的二進製字符串中包含空格, bindec()函數默認是不支持的。它會將字符串從頭開始解析,遇到非0或1的字符就停止處理,因此空格會導致結果不正確,甚至返回0。
示例:
<code> <?php echo bindec('101 1'); // 輸出5,因為遇到空格後停止處理,實際上解析了'101' ?> </code>可以看到,空格使得bindec()無法正常解析完整的二進制數據。
如果你的二進製字符串中帶有空格,想要正確轉換,可以先用PHP的字符串處理函數去除空格,然後再傳入bindec() 。
示例:
<code> <?php $binaryWithSpaces = '101 1101 001'; $cleanBinary = str_replace(' ', '', $binaryWithSpaces); $decimalValue = bindec($cleanBinary); echo $decimalValue; ?> </code>這里通過str_replace()去掉了所有空格,再調用bindec() ,確保傳入的是純二進製字符串。
如果你的字符串裡除了空格還有其它空白字符(如製表符\t 、換行符\n等),推薦使用preg_replace()去除所有空白:
<code> <?php $binaryWithWhitespace = "101\t1101\n001"; $cleanBinary = preg_replace('/\s+/', '', $binaryWithWhitespace); $decimalValue = bindec($cleanBinary); echo $decimalValue; ?> </code>這樣可以保證二進製字符串無任何空白字符, bindec()才能準確解析。
bindec()函數不支持包含空格或其它空白字符的二進製字符串輸入。
在使用bindec()前,務必清除輸入字符串中的所有空白字符。
可以使用str_replace(' ', '', $str)去除空格,或者使用更強大的preg_replace('/\s+/', '', $str)去除所有空白字符。
處理乾淨的純二進製字符串才能確保bindec()正確返回十進制數值。