在PHP 中,處理二進製字符串時,經常會遇到需要對其中某幾位進行提取或修改的需求。 bindec()函數可以將二進製字符串轉換為十進制整數,而substr()函數則可以幫助我們截取字符串的某一部分。將兩者結合起來使用,可以實現對二進製字符串的位級別操作。
bindec(string $binary_string): int
將一個二進製表示的字符串轉換成十進制整數。例如: bindec('101')返回5。
substr(string $string, int $start, int $length = null): string
從字符串中截取一段子串。例如: substr('101101', 2, 3)返回'110' 。
假設有一個二進製字符串,想要提取從第3 位開始的4 位二進制數,然後將其轉換為十進制。
<?php
$binaryString = "1101011011"; // 原始二進製字符串
// 使用 substr 截取從索引 2 開始長度為 4 的子串(注意索引從0開始)
$subBinary = substr($binaryString, 2, 4); // "0101"
// 使用 bindec 將截取的二進製字符串轉換為十進制
$decimalValue = bindec($subBinary);
echo "二進制子串: " . $subBinary . "\n"; // 輸出: 0101
echo "對應的十進制值: " . $decimalValue . "\n"; // 輸出: 5
?>
substr($binaryString, 2, 4) :從原始字符串的第3 個字符開始截取(索引從0計數),長度為4,得到"0101" 。
bindec("0101") :將"0101"轉換成十進制5。
除了提取,還可以修改二進製字符串的某一位:
<?php
$binaryString = "1101011011";
// 將第5位元(索引為4)改為1
$pos = 4;
$newBit = '1';
// 修改字符串
$binaryString = substr_replace($binaryString, $newBit, $pos, 1);
echo "修改後的二進製字符串: " . $binaryString . "\n";
?>
通過結合substr()截取字符串和bindec()轉換函數,可以方便地對二進製字符串進行位級別的提取和轉換,配合其他字符串操作函數甚至能實現更複雜的二進制數據處理。