如何在PHP7中正确地将十六进制转换为二进制?

如何在PHP7中正确地将十六进制转换为二进制?,php,type-conversion,hex,bin,Php,Type Conversion,Hex,Bin,我正在尝试将十六进制值“0000”转换为BIN值。 在数学方面: (0000)16=(0000)2 但是当我尝试使用 $hex = '0000'; echo base_convert ($hex, 16, 2); 我得到的是0而不是0 它看起来一样,但不是。 在我的场景中,16位表示保存为十六进制值的数字输出的状态 我需要改变什么,才能使它按预期工作?根据我的经验,PHP和Js也有同样的问题。我曾经在需要时检查并添加n 0。您得到的是0,因为base\u convert不会向结果字符串中输出比

我正在尝试将十六进制值“0000”转换为BIN值。 在数学方面: (0000)16=(0000)2

但是当我尝试使用

$hex = '0000';
echo base_convert ($hex, 16, 2);
我得到的是0而不是0

它看起来一样,但不是。 在我的场景中,16位表示保存为十六进制值的数字输出的状态


我需要改变什么,才能使它按预期工作?

根据我的经验,PHP和Js也有同样的问题。我曾经在需要时检查并添加n 0。

您得到的是0,因为
base\u convert
不会向结果字符串中输出比表示数字所需更多的数字。相反,使用将字符串转换为十进制数,然后使用
%b
转换规范将输出转换为16位二进制数字:

$hex = '0000';
$bin = sprintf("%016b", hexdec($hex));
echo $bin;
输出:

0000000000000000
0000 0000 0000 0000
如果您真的想要在每个4位块之间留有空格,您可以使用和,例如

输出:

0000000000000000
0000 0000 0000 0000

这不是hex2bin的作用。如果您创建了一个演示示例,例如,您会看到它没有产生OP想要的输出。谢谢您纠正我:)我没有彻底阅读问题。@Tikky我改进了答案,删除对
base\u convert
的调用,并将其替换为
hexdec
,这比再次使用
sprintf
更合适。对我来说很好