Как изменить десятичное значение в двоичное и восстановить его битовые значения в массив? - PullRequest
2 голосов
/ 17 сентября 2009

Например:

$result = func(14);

Значение $result должно быть:

array(1,1,1,0)

Как реализовать это func?

Ответы [ 5 ]

5 голосов
/ 17 сентября 2009

decbin приведет к получению двоичной строки:

echo decbin(14);                              # outputs "1110"
array_map('intval', str_split(decbin(14)))    # acomplishes the full conversion   
3 голосов
/ 17 сентября 2009
function func($number) {
    return str_split(decbin($number));
}
1 голос
/ 17 сентября 2009
for($i = 4; $i > 0; $i++){
    array[4-$i] = (int)($x / pow(2,$i);
    $x -= (int)($x / pow(2,$i);
}

... это бы сработало. Перед этим вы можете проверить, насколько большим должен быть массив и с какого значения $ i начать.

1 голос
/ 17 сентября 2009

Вы можете разделить его на 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

1 голос
/ 17 сентября 2009
<?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
)
...