填充为零的十六进制数在PHP中

时间:2016-05-07 22:42:40

标签: php

不确定我在这里做错了什么。当我在十六进制数字前面填充零时,它似乎改变了数字。

$number=1741;
strtoupper(dechex($number))
output is 6CD

sprintf('%03x', strtoupper(dechex($number))
output is 006

2 个答案:

答案 0 :(得分:4)

接受的答案是使用sprintf两次。我没有看到两次执行此操作的值,%x接受与%d相同的填充参数,因此可以在一个函数调用中完成。

$number = 141;

$hex = sprintf('%03X', $number); // 08D

请参阅:https://3v4l.org/LQrWK

所以要回答这个问题,只需删除strtoupper(dechex(...))sprintf就可以了。

echo sprintf('%03x', $number); // 06d

echo sprintf('%03X', $number); // 06D

答案 1 :(得分:2)

对于数字的填充零,只需使用sprintf,如果需要十六进制数,则需要使用sprintf之类的有效格式来显示十六进制数。

示例:

语法:sprintf(format,arg1,arg2,arg++)

格式:

  • %x - 十六进制数字(小写字母)
  • %X - 十六进制数字(大写字母)

因此,使用sprintf获取hexadeimal数字,然后使用另一个sprintf获取零填充数。

$number = 141;

$hex = sprintf("%X", $number); //8D
$s = sprintf('%03d', $hex); // 08D