今日ある友人に野暮用で会った。
彼がなぜだかPerlで2進数を扱うのに悩んでいたので回答。
彼が悩んでいたのは、2進数を10進数に変換する方法。
まっとうに考えると、こんな感じになるだろう。
sub bin2dec($){ my $bin = shift; my $dec = 0; for my $i (split // => $bin){ $dec = $dec*2+$i; } return $dec; }
しかしこういう方法もある。
sub bin2dec($){ my $bin = shift; my $dec = 0; $bin =~ s/([01])/$dec=$dec*2+$1/geo; return $dec; }
極めつけは、この方法。
sub bin2dec($){ $_[0] =~ /([01]+)/o; return eval "0b$1"; }
その逆の方は、ものすごい簡単。
sub dec2bin($){ sprintf "0b%b" => @_ }
この手のことは、表題の本に詳しいので是非。日本語版の監訳者には私も名を連ねてます。
Dan the JAPH
ふと思ったのですが、
ライブドアのトップページがyahooに酷似している件で、
これって子飼さんも開発に関わっていたのですか?
僕としては上場企業があそこまでパクるのはどうかと思います・・・