манипулирование битами — php лучший способ отменить строку битов

У меня есть массив строковых битов переменной длины, и мне нужно их отрицать.

например.

вход array("1", "00101", "101", "0000")

выход array("0", "11010", "010", "1111")

Есть ли простой способ, как это сделать?

0

Решение

Вы можете сделать это используя strtr функция:

$bites = array("1", "00101", "101", "0000");

$output = array_map(function($element){
return strtr($element, array('1', '0'));
}, $bites);

print_r($output);
0

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

foreach ($values as $value) {
$negate = intval($value, 2) ^ 0x7FFFFFFF;
echo base_convert(strval($negate), 10, 2);
}

Этот код будет обрабатывать все целые числа в диапазоне 0..231-1. Поскольку PHP не поддерживает целые числа без знака, 231-1 — это максимальное значение, которое может быть обработано на всех платформах (то есть 32-разрядных и 64-разрядных).

Вы можете использовать значения до 263-1, если ваш код гарантированно работает на 64-битных платформах.

0