Как правильно конвертировать HEX в BIN в PHP7?

Я пытаюсь преобразовать значение HEX «0000» в значение BIN.
По математике:
(0000) 16 = (0000 0000 0000 0000) 2

но когда я пытаюсь использовать

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

Я получаю 0 единиц от 0000 0000 0000 0000.

Это выглядит так же, но это не так.
В моем сценарии 16 бит представляют собой состояние цифровых выходов, сохраненных в виде значения HEX.

Что мне нужно изменить, чтобы все заработало как положено?

-1

Решение

Вы получаете 0, потому что base_convert не будет выводить больше цифр в строку результата, чем необходимо для представления числа. Вместо этого используйте hexdec преобразовать строку в десятичное число, а затем использовать sprintf чтобы получить вывод в виде 16 двоичных цифр, используя %b спецификация преобразования:

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

Выход:

0000000000000000

Если вы действительно хотите пробелы между каждым блоком из 4 битов, вы можете использовать str_split а также implode например

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

Выход:

0000 0000 0000 0000

Демо на 3v4l.org

2

Другие решения

PHP и Js имеют ту же проблему в моем опыте. Я использовал, чтобы проверить и добавить n 0, где это необходимо.

0