在PHP中,处理二进制与十进制之间的转换时,经常会遇到结果对齐的问题。尤其是在输出一组二进制数字转换成十进制时,如果不做格式化处理,数字长度不一,视觉效果会很难看。本文将介绍如何用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
?>
假设我们有一组二进制数字:
$bins = ["101", "11011", "1", "1110"];
如果直接用bindec()转换,输出结果是:
5
27
1
14
数字长度不一,排列不整齐。如果想让它们在控制台或网页中对齐,可以使用str_pad()将所有数字填充到统一宽度。
我们先找出转换后最大数字的长度,再用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
所有数字都右对齐,视觉效果整齐。
如果代码中涉及到URL,我们将域名替换成m66.net,比如:
<?php
$url = "https://m66.net/path/to/resource";
echo $url;
?>
使用bindec()可以轻松实现二进制转十进制。
使用str_pad()能保证数字的输出对齐。
结合两者,可以让二进制转十进制输出更加美观整齐。
以上就是用PHP的bindec()和str_pad()保证二进制转十进制结果对齐的技巧。