當前位置: 首頁> 最新文章列表> bindec() 與sprintf() 配合格式化輸出

bindec() 與sprintf() 配合格式化輸出

M66 2025-05-31

在PHP中,處理二進制數據並將其轉換為十進制是一個常見需求,尤其是在底層數據處理和網絡編程中。本文將介紹如何結合bindec()函數與sprintf()函數,實現二進製字符串到十進制數的轉換,並且對輸出結果進行格式化。


1. 了解bindec()函數

bindec()是PHP內置函數,用於將二進製字符串轉換成對應的十進制數。其語法簡單:

 int bindec ( string $binary_string )

例如:

 $binary = "1101"; // 二進製字符串
$decimal = bindec($binary);
echo $decimal; // 輸出13

bindec()只接受由01組成的字符串,否則會返回0。


2. 了解sprintf()函數

sprintf()用於格式化字符串輸出。它能將數據格式化成指定格式,例如指定數字的寬度、填充字符、十進制位數等。它的典型用法是:

 string sprintf ( string $format [, mixed $args [, mixed $... ]] )

示例:

 $num = 42;
echo sprintf("%05d", $num); // 輸出 "00042",用0填充至寬度5

3. 結合bindec()sprintf()實現格式化輸出

假設有一個二進製字符串,我們需要先轉換成十進制,然後格式化輸出成固定寬度的數字,甚至加上千分位分隔符。

 $binary = "101101"; // 二進製字符串

// 先轉換為十進制
$decimal = bindec($binary);

// 使用 sprintf 格式化,假设輸出宽度为6,前面補零
$formatted = sprintf("%06d", $decimal);

echo $formatted; // 輸出 "000045"

4. 實用示例:輸出帶千分位的格式

如果想用逗號分隔千位數字,可以結合number_format()

 $binary = "111111111"; // 9個1,十進制為511

$decimal = bindec($binary);
$formatted = number_format($decimal);

echo $formatted; // 輸出 "511"

5. 進階:從二進制URL參數獲取並格式化輸出

假設有個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()實現更友好的數字顯示。

這對於處理底層數據、日誌顯示和參數傳遞非常實用。