替换二进制形式0-> 1和1-> 0值 - perl

Mav*_*ick 4 perl

在我的脚本中,我正在处理二进制值,我需要在一个地方替换0-> 1和1-> 0.

示例:输入数字= 10101001输出数字= 01010110

我试过了$string =~ s/1/0/;,reverse function但是没有给我正确的输出.

有人可以帮我吗.

Mil*_*ler 10

使用tr:

my $str = '10101001';

$s =~ tr/01/10/;

print "$s\n";
Run Code Online (Sandbox Code Playgroud)

输出:

01010110
Run Code Online (Sandbox Code Playgroud)


pax*_*blo 5

如果您的输入字符串只有这两个可能性01,那么您可以在一个多阶段的方法使用替换:

$str =~ s/1/x/g;  # all 1's to x
$str =~ s/0/1/g;  # all 0's to 1
$str =~ s/x/0/g;  # all x's to 0
Run Code Online (Sandbox Code Playgroud)

对于仅提供替换的语言来说,这不是一个糟糕的选择,但Perl也有一个原子翻译功能:

$str =~ tr/01/10/;
Run Code Online (Sandbox Code Playgroud)

它也可以正常工作(更好,真的,因为它的代码更少,可能更少的数据传递).