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;
}
一応これでも変換はできる(スマート感には欠けますが…)

コメント