我有一个可变长度的字符串位数组,我需要否定它们。php否定字符串的最佳方法
例如。
输入array("1", "00101", "101", "0000")
输出array("0", "11010", "010", "1111")
有没有一种简单的方法怎么办呢?
我有一个可变长度的字符串位数组,我需要否定它们。php否定字符串的最佳方法
例如。
输入array("1", "00101", "101", "0000")
输出array("0", "11010", "010", "1111")
有没有一种简单的方法怎么办呢?
你可以做到这一点使用strtr功能:
$bites = array("1", "00101", "101", "0000");
$output = array_map(function($element){
return strtr($element, array('1', '0'));
}, $bites);
print_r($output);
foreach ($values as $value) {
$negate = intval($value, 2)^0x7FFFFFFF;
echo base_convert(strval($negate), 10, 2);
}
该代码将处理在范围0..2 -1的所有整数。由于PHP不支持无符号整数,因此-1是可以在所有平台(即32位和64位)上处理的最大值。
如果您的代码保证在64位平台上运行,您可以使用最大值为2 -1的值。
你有什么数据类型?这些是真正的比特还是字符串表示? – Mureinik 2015-02-08 18:21:43
如果只是字符串,那么['strtr'](http://php.net/strtr)。 (呃,正确使用它,用交换字符串,而不是数组参数。) – mario 2015-02-08 18:21:47
请你考虑输入的实际格式提供一些代码吗?即G。 '$ bits = array(“1”,“00101”);' – 2015-02-08 18:22:02