生活随笔
收集整理的這篇文章主要介紹了
JAVA【long值与ip地址互转】 - ip的判别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
閱讀前提: 您需要了解什么是 ip地址
?本章目的:實現ip地址和 long類型值的互轉
一、應用范圍
? ? 一般用在登錄限制、查找IP所在城市等需求中,windows的ping命令也支持整數形式的IP。
二、關鍵技術點
? ? 將IP地址轉化成整數的方法如下:
? ? 1、通過String的indexOf方法找出IP字符串中的點"."的位置。
? ? 2、根據點的位置,使用String的substring方法把IP字符串分成4段。
? ? 3、使用Long的parseLong方法把子段轉化成一個3位整數。
? ? 4、通過左移位操作(<<)給每一段的數字加權,第一段的權為2的24次方,第二段的權為2的16次方,第三段的權為2的8次方,最后一段的權為1
? ?
? ? 將整數形式的IP地址轉化成字符串的方法如下:
? ? 1、將整數值進行右移位操作(>>>),右移24位,右移時高位補0,得到的數字即為第一段IP。
? ? 2、通過與操作符(&)將整數值的高8位設為0,再右移16位,得到的數字即為第二段IP。
? ? 3、通過與操作符吧整數值的高16位設為0,再右移8位,得到的數字即為第三段IP。
? ? 4、通過與操作符吧整數值的高24位設為0,得到的數字即為第四段IP。
public?class?IPtoLong?{//將127.0.0.1形式的IP地址轉換成十進制整數,這里沒有進行任何錯誤處理public?static?long?ipToLong(String?strIp){long[]?ip?=?new?long[4];//先找到IP地址字符串中.的位置int?position1?=?strIp.indexOf(".");int?position2?=?strIp.indexOf(".",?position1?+?1);int?position3?=?strIp.indexOf(".",?position2?+?1);//將每個.之間的字符串轉換成整型ip[0]?=?Long.parseLong(strIp.substring(0,?position1));ip[1]?=?Long.parseLong(strIp.substring(position1+1,?position2));ip[2]?=?Long.parseLong(strIp.substring(position2+1,?position3));ip[3]?=?Long.parseLong(strIp.substring(position3+1));return?(ip[0]?<<?24)?+?(ip[1]?<<?16)?+?(ip[2]?<<?8)?+?ip[3];}//將十進制整數形式轉換成127.0.0.1形式的ip地址public?static?String?longToIP(long?longIp){StringBuffer?sb?=?new?StringBuffer("");//直接右移24位sb.append(String.valueOf((longIp?>>>?24)));sb.append(".");//將高8位置0,然后右移16位sb.append(String.valueOf((longIp?&?0x00FFFFFF)?>>>?16));sb.append(".");//將高16位置0,然后右移8位sb.append(String.valueOf((longIp?&?0x0000FFFF)?>>>?8));sb.append(".");//將高24位置0sb.append(String.valueOf((longIp?&?0x000000FF)));return?sb.toString();}public?static?void?main(String[]?args){String?ipStr?=?"58.50.24.78";long?longIp?=?IPtoLong.ipToLong(ipStr);System.out.println("整數形式為:"?+?longIp);System.out.println("整數"?+?longIp?+?"轉化成字符串IP地址:"+?IPtoLong.longToIP(longIp));//ip地址轉化成二進制形式輸出System.out.println("二進制形式為:"?+?Long.toBinaryString(longIp));}}
?
?
轉載于:https://my.oschina.net/infiniteSpace/blog/313525
總結
以上是生活随笔為你收集整理的JAVA【long值与ip地址互转】 - ip的判别的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。