Например:
$result = func(14);
Результат $result
должен быть:
array(1,1,1,0)
Как реализовать эту func
?
function func($number) { return str_split(decbin($number)); }
decbin
создаст строку двоичной строки:
echo decbin(14); # outputs "1110" array_map('intval', str_split(decbin(14))) # acomplishes the full conversion
<?php function int_to_bitarray($int) { if (!is_int($int)) { throw new Exception("Not integer"); } return str_split(decbin($int)); } $result = int_to_bitarray(14); print_r($result);
Вывод:
Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 0 )
Вы можете продолжить разделение на 2 и сохранить остаток в обратном направлении …
число = 14
14% 2 = 0 число = 14/2 = 7
7% 2 = 1 число = 7/2 = 3
3% 2 = 1 число = 3/2 = 1
1% 2 = 1 число = 1/2 = 0
for($i = 4; $i > 0; $i++){ array[4-$i] = (int)($x / pow(2,$i); $x -= (int)($x / pow(2,$i); }
… это сделало бы трюк. До этого вы могли проверить, насколько большой должен быть массив и с каким значением $ i запускаться.