ロングIP とかいう、IP アドレスを区切らずに十進数にしたやつ*1があるのを窓の森で知った*2んだけど、あれって正引きさえ除けば javascript でさえできるよね……でも最初に ruby で書いてから javascript に書き直そうと思ったら sprintf なくて面倒だった。結局汚くなってしまった。まぁ使わないんだけど。

function longip(ip) {
    ip = ip.split(".");
    var ret = "";
    for (var i = 0; i < ip.length; i++) {
        temp = Number(ip[i]).toString(2);
        zero = "";
        for (var j = 0; j < (8 - temp.length); j++) {
            zero += "0";
        }
        ret += zero + temp;
    }
    ret = parseInt(ret, 2);
    return ret;
}

つーか ruby のほうのソース消してしまった、のでまぁまた書いてみる。数行だし。

def longip(ip)
    binary = ""
    ip.split(".").each do |part|
        binary += "%08b" % part.to_i
    end
    binary.to_i(2)
end

longip("127.0.0.1") => 2130706433
longip(IPSocket::getaddress("localhost")) => 2130706433 (Ruby; require "socket")
なんかわざわざ書くほどじゃないけど、俺は激しく忘れっぽいのよね!
でもこのロングIPさ、xrea とかでやるとうまくいかないね。ただの IP アドレス指定だから、バーチャルホストうんたらで無理くさい。知らないけど。

  1. トップ
  2. prog
  3. えくまたん
▲ この日のエントリ