Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中为十六进制数填充零_Php - Fatal编程技术网

在php中为十六进制数填充零

在php中为十六进制数填充零,php,Php,我不知道我做错了什么。当我在一个十六进制数前面加零时,它似乎改变了这个数 $number=1741; strtoupper(dechex($number)) output is 6CD sprintf('%03x', strtoupper(dechex($number)) output is 006 对于数字的零填充,只需使用sprintf,如果需要十六进制数字,则需要使用类似sprintf的内容,并使用有效的格式来显示十六进制数字 示例: 语法:sprintf(格式,arg1,arg2,a

我不知道我做错了什么。当我在一个十六进制数前面加零时,它似乎改变了这个数

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

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

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

示例:

语法:
sprintf(格式,arg1,arg2,arg++)

格式:

  • %x-十六进制数(小写字母)
  • %X-十六进制数(大写字母)
因此,使用
sprintf
获取
hexadeimal
编号,然后使用另一个
sprintf
获取零填充编号

$number = 141;

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

公认的答案是使用
sprintf
两次。我看不出这样做有什么价值,
%x
接受与
%d
相同的填充参数,因此这可以在一个函数调用中完成

$number = 141;

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

因此,要回答这个问题,只需删除strtoupper(dechex(…),您拥有的
sprintf
就可以了

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


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

您不必使用
dechex
;)只需将数字传递给sprintf,它就会以十六进制打印您的数字representation@Rizier123:谢谢:)