2005年07月29日 19:35 [Edit]

この記事をクリップ! newsing it! Buzzurlにブックマーク b.hatena.ne.jp/entry Perlで2進数

今日ある友人に野暮用で会った。

彼がなぜだか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


この記事へのトラックバックURL

この記事へのソーシャルブックマーク
はてなブックマーク
Livedoorクリップ
0 Buzzurl
この記事へのトラックバック
このコメントへの返答という形で、私が「パクリ」において思うところを述べておくことにします。 404 Blog Not Found:Perlで2進数-weiy1005 さんのコメント 朝生を見てからファンになりました。 それはどうも。...
パクリとパチモノ【404 Blog Not Found】at 2005年07月30日 02:38
この記事へのコメント
朝生を見てからファンになりました。

ふと思ったのですが、
ライブドアのトップページがyahooに酷似している件で、
これって子飼さんも開発に関わっていたのですか?
僕としては上場企業があそこまでパクるのはどうかと思います・・・
Posted by weiy1005 at 2005年07月29日 21:04