不确定我在这里做错了什么。当我在十六进制数字前面填充零时,它似乎改变了数字。
$number=1741;
strtoupper(dechex($number))
output is 6CD
sprintf('%03x', strtoupper(dechex($number))
output is 006
答案 0 :(得分:4)
接受的答案是使用sprintf
两次。我没有看到两次执行此操作的值,%x
接受与%d
相同的填充参数,因此可以在一个函数调用中完成。
$number = 141;
$hex = sprintf('%03X', $number); // 08D
所以要回答这个问题,只需删除strtoupper(dechex(...))
,sprintf
就可以了。
echo sprintf('%03x', $number); // 06d
echo sprintf('%03X', $number); // 06D
答案 1 :(得分:2)
对于数字的填充零,只需使用sprintf
,如果需要十六进制数,则需要使用sprintf
之类的有效格式来显示十六进制数。
示例:强>
语法:sprintf(format,arg1,arg2,arg++)
格式:
因此,使用sprintf
获取hexadeimal
数字,然后使用另一个sprintf
获取零填充数。
$number = 141;
$hex = sprintf("%X", $number); //8D
$s = sprintf('%03d', $hex); // 08D