將IP地址與Int轉換

有時會碰到這樣的需求,須要將IP地址轉換爲整數存放,在讀取時再轉換爲IP地址格式算法

一、將IP字符串轉換爲整型保存數組

代碼以下:blog

複製代碼

string address;
            int intAddress;
            string ipAddress;
            while ((address = Console.ReadLine()) != "\\0")
            {
                //將IP地址轉換爲字節數組
                byte[] IPArr = IPAddress.Parse(address).GetAddressBytes();

                //顯示出來字節數組存放的內容,結果以16進制顯示
                Console.WriteLine(BitConverter.ToString(IPArr, 0, IPArr.Length));

                //將字節數組轉換爲整型
                intAddress = BitConverter.ToInt32(IPArr, 0);
                Console.WriteLine(intAddress);
                       
            }

            Console.ReadLine();

複製代碼

運行結果:ip

C0-A8-0A-11  是IPArr轉換爲string類型時的輸出結果,也是192 168 10 17 的16進制字符串

285911232 是IPArr轉換爲整數的結果,C0是最低位,也就是說該整數是由 11-0A-A8-C0轉換成10進制的來的,你們能夠試試!string

 

二、將IP轉換的整型數組轉換爲IP格式it

實際上是第一部分的逆過程,先將整型轉換爲字節數組,再將字節數組轉換爲IPim

代碼以下:總結

//將整型轉換爲IP
ipAddress = new IPAddress(BitConverter.GetBytes(intAddress)).ToString();

運行結果:數據

最後一行即爲原來的IP

 

三、總結

  兩個過程是互逆的過程,IP轉整型:利用IPAddress.GetAddressBytes(),獲取IP的字節數組格式,而後利用BitConverter.ToInt32(),來轉換爲Int.涉及到的算法,無非是將字節數組轉換爲16進制,而後數組的第一個數值爲最低位這樣的順序來轉換爲10進制數獲得整型數據;整型轉IP則將這個過程反過來。

相關文章
相關標籤/搜索