有時會碰到這樣的需求,須要將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則將這個過程反過來。