PHPでは、バイナリと小数の間の変換を扱う場合、結果のアライメントの問題に遭遇することがよくあります。特に、バイナリ数のセットを10進数に出力する場合、フォーマットが実行されない場合、数値の長さは異なり、視覚効果は醜くなります。この記事では、bindec()関数とstr_pad()関数を使用して、変換された10進数が揃っていることを確認します。
bindec(string $ binary_string):int
この関数は、バイナリ文字列を対応する小数整数に変換するために使用されます。例えば:
<?php
$binary = "1010";
$decimal = bindec($binary);
echo $decimal; // 出力10
?>
str_pad(string $ input、int $ $ _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
数字は異なる長さで、きちんと配置されていません。コンソールまたはWebページに並べる場合は、 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()を使用して、バイナリから小数の結果を確実にするための手法です。