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);
我有一个可变长度的字符串位数组,我需要取反它们。
例如。
输入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);