php 取反位串的最佳方法

php best way to negate string of bits

我有一个可变长度的字符串位数组,我需要取反它们。

例如。

输入array("1", "00101", "101", "0000")

输出array("0", "11010", "010", "1111")

有没有简单的方法可以做到这一点?

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

此代码将处理 0..231-1 范围内的所有整数。由于 PHP 不支持无符号整数,因此 231-1 是可以在所有平台(即 32 位和 64 位)上处理的最大值。

如果您的代码保证在 64 位平台上 运行,您最多可以使用 263-1 的值。

您可以使用 strtr 函数执行此操作:

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

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

print_r($output);