php最好的方法来否定一串位

时间:2015-02-08 18:19:33

标签: php bit-manipulation

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

例如。

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

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

有一种简单的方法可以做到吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

您可以使用strtr功能执行此操作:

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

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

print_r($output);