10進数を2進数に変更し、そのビット値を配列に復元する方法は?

StackOverflow https://stackoverflow.com/questions/1437670

  •  08-07-2019
  •  | 
  •  

質問

例:

$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で割って残りを逆に保存できます...

number = 14

14%2 = 0 number = 14/2 = 7

7%2 = 1 number = 7/2 = 3

3%2 = 1 number = 3/2 = 1

1%2 = 1 number = 1/2 = 0

for($i = 4; $i > 0; $i++){
    array[4-$i] = (int)($x / pow(2,$i);
    $x -= (int)($x / pow(2,$i);
}

...これでうまくいきます。その前に、配列の大きさと、開始する$ iの値を確認することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top