在碱基之间转换和格式化输出时出现问题



目标是将0到255之间的十进制基数转换为十六进制基数。十六进制的基数必须写成XX的形式。因此,例如60_10=3c_16,但也5_10=05_16。

例如:

十进制数为60,十六进制数为3c。

下面的代码可以工作:

<?php
echo dechex(60);
?>

输出为:3c

宾果。

现在:为什么下面代码的输出是03而不是3c?怎样才能把它变成3c呢?

<?php
$br=60;
echo sprintf("%02x", dechex($br));
?>

正确用法

见https://www.php.net/sprintf

当你传入dec

<?php
echo sprintf('%02x', 60);

输出
3c

使用

sprintf("%02x", dechex($br));

3c(dechex()的结果),格式中的x表示

x实参被视为整数,表示为作为十六进制数字(小写字母)。

所以它期望一个整数,并将其转换为3

x为您做转换,不需要dechex.....

echo sprintf("%02x", $br);