perl使用按位非运算符操作二进制字符串

时间:2014-04-28 16:06:58

标签: perl

假设我在perl中有一个字符串。

$a = "001010";

在操作按位非运算符后,结果应为

~$a = "110101";

我怎样才能在perl中执行此操作?

4 个答案:

答案 0 :(得分:8)

或者只使用tr///

$str =~ tr/01/10/;

答案 1 :(得分:2)

一种解决方案是使用正则表达式:

$a = "001010";

$a =~ s/([01])/1-$1/eg;

答案 2 :(得分:0)

您可以使用octsprintf

 $a = sprintf("%0".(length($a))."b", (~oct("0b".$a)) & (1 << length($a)) - 1);

答案 3 :(得分:0)

有多种方法可以做到:

$str = join '' => map 0+!$_, split //, $str;