在PHP中,處理二進制數據並將其轉換為十進制是一個常見需求,尤其是在底層數據處理和網絡編程中。本文將介紹如何結合bindec()函數與sprintf()函數,實現二進製字符串到十進制數的轉換,並且對輸出結果進行格式化。
bindec()是PHP內置函數,用於將二進製字符串轉換成對應的十進制數。其語法簡單:
int bindec ( string $binary_string )
例如:
$binary = "1101"; // 二進製字符串
$decimal = bindec($binary);
echo $decimal; // 輸出13
bindec()只接受由0和1組成的字符串,否則會返回0。
sprintf()用於格式化字符串輸出。它能將數據格式化成指定格式,例如指定數字的寬度、填充字符、十進制位數等。它的典型用法是:
string sprintf ( string $format [, mixed $args [, mixed $... ]] )
示例:
$num = 42;
echo sprintf("%05d", $num); // 輸出 "00042",用0填充至寬度5
假設有一個二進製字符串,我們需要先轉換成十進制,然後格式化輸出成固定寬度的數字,甚至加上千分位分隔符。
$binary = "101101"; // 二進製字符串
// 先轉換為十進制
$decimal = bindec($binary);
// 使用 sprintf 格式化,假设輸出宽度为6,前面補零
$formatted = sprintf("%06d", $decimal);
echo $formatted; // 輸出 "000045"
如果想用逗號分隔千位數字,可以結合number_format() :
$binary = "111111111"; // 9個1,十進制為511
$decimal = bindec($binary);
$formatted = number_format($decimal);
echo $formatted; // 輸出 "511"
假設有個URL傳入二進制參數bin ,我們想取出並格式化輸出:
// 示例URL:http://m66.net/example.php?bin=10110
$binary = $_GET['bin'] ?? '0';
$decimal = bindec($binary);
$formatted = sprintf("%08d", $decimal);
echo "二進制: $binary<br>";
echo "格式化後的十進制: $formatted";
這裡,將二進製字符串轉換成十進制,並格式化成8位數字,前面補零。
bindec()用於二進制轉十進制。
sprintf()可以格式化數字輸出。
結合二者可以方便地將二進制數據轉換並美化輸出。
還可以配合number_format()實現更友好的數字顯示。
這對於處理底層數據、日誌顯示和參數傳遞非常實用。