IPアドレスを16進2桁表記に変換する

C#で10進ドット区切りのIPアドレス(192.168.100.1)を16進2桁表記(C0A86401)に変換してやり取りすることがたまにあり、その度にどう変換すればスマートになるか思案するのでメモ。

ドットで区切った後、16進数の文字列に変換

一番最初に思い付いた、ドットで区切った各オクテッドを16進数に変換し連結させる方法。

private string CondertToHex(string decip)
{
    // 16進数への変換後用変数
    string hexip = "";
    // (一時的な)int変換用変数
    int tmpip;

    // IPアドレスをドット(.)で区切る
    string[] octip = decip.Split('.');

    // 取得できた{192,168,100,1}が整数値であれば
    // 16進数(2桁)の文字列に変換し、連結する。
    foreach(string item in octip)
    {
        if (int.TryParse(item, out tmpip))
        {
            hexip += tmpip.ToString("X2");
        }
    }

    return hexip;
}

一応これでも変換はできる(スマート感には欠けますが…)

コメント

タイトルとURLをコピーしました