Как правильно конвертировать HEX в BIN в PHP7? - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь преобразовать значение 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.

Что мне нужно изменить, чтобы оно работало должным образом?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Вы получаете 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

0 голосов
/ 10 декабря 2018

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

...