在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() 实现更友好的数字显示。
这对于处理底层数据、日志显示和参数传递非常实用。