如何在 PHP7 中正确地将 HEX 转换为 BIN?

How to properly convert HEX to BIN in PHP7?

我正在尝试将 HEX 值“0000”转换为 BIN 值。 在数学上: (0000)16 = (0000 0000 0000 0000)2

但是当我尝试使用

$hex = '0000';
echo base_convert ($hex, 16, 2);

我得到 0 insted of 0000 0000 0000 0000。

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

我需要更改什么才能使其按预期工作?

PHP和Js在我的经验中也有同样的问题。我曾经检查并在需要的地方添加 n 0。

您得到的是 0,因为 base_convert 不会在结果字符串中输出比表示该数字所需更多的数字。相反,使用 hexdec to convert the string to a decimal number and then use sprintf 使用 %b 转换规范将输出作为 16 个二进制数字:

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

输出:

0000000000000000

如果你真的想要在每个 4 位块之间有空格,你可以使用 str_split and implode 例如

echo implode(' ', str_split($bin, 4)) . "\n";

输出:

0000 0000 0000 0000

Demo on 3v4l.org