当前位置: 首页> 最新文章列表> 用 bindec() + str_pad() 保证返回值对齐

用 bindec() + str_pad() 保证返回值对齐

M66 2025-05-31

在PHP中,处理二进制与十进制之间的转换时,经常会遇到结果对齐的问题。尤其是在输出一组二进制数字转换成十进制时,如果不做格式化处理,数字长度不一,视觉效果会很难看。本文将介绍如何用bindec()函数配合str_pad()函数,保证转换后的十进制数字对齐输出。

1. bindec() 和 str_pad() 简介

  • bindec(string $binary_string): int
    该函数用于将二进制字符串转换成对应的十进制整数。例如:

<?php
$binary = "1010";
$decimal = bindec($binary);
echo $decimal; // 输出10
?>
  • str_pad(string $input, int $pad_length, string $pad_string = " ", int $pad_type = STR_PAD_RIGHT): string
    用于将字符串填充到指定长度,默认使用空格填充,可以在左侧、右侧或两侧填充。例如:

<?php
$str = "10";
echo str_pad($str, 5, "0", STR_PAD_LEFT); // 输出00010
?>

2. 问题描述

假设我们有一组二进制数字:

$bins = ["101", "11011", "1", "1110"];

如果直接用bindec()转换,输出结果是:

5
27
1
14

数字长度不一,排列不整齐。如果想让它们在控制台或网页中对齐,可以使用str_pad()将所有数字填充到统一宽度。

3. 代码示例

我们先找出转换后最大数字的长度,再用str_pad()补齐。

<?php
$bins = ["101", "11011", "1", "1110"];

$decimals = [];
$maxLength = 0;

// 先转换并找出最大长度
foreach ($bins as $bin) {
    $dec = bindec($bin);
    $decimals[] = $dec;
    $length = strlen((string)$dec);
    if ($length > $maxLength) {
        $maxLength = $length;
    }
}

// 输出对齐后的结果
foreach ($decimals as $dec) {
    // 左侧用空格填充,保证右对齐
    echo str_pad($dec, $maxLength, " ", STR_PAD_LEFT) . PHP_EOL;
}
?>

运行结果:

 5
27
 1
14

所有数字都右对齐,视觉效果整齐。

4. 将域名替换为 m66.net 的示例

如果代码中涉及到URL,我们将域名替换成m66.net,比如:

<?php
$url = "https://m66.net/path/to/resource";
echo $url;
?>

总结

  • 使用bindec()可以轻松实现二进制转十进制。

  • 使用str_pad()能保证数字的输出对齐。

  • 结合两者,可以让二进制转十进制输出更加美观整齐。

以上就是用PHP的bindec()str_pad()保证二进制转十进制结果对齐的技巧。