日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA【long值与ip地址互转】 - ip的判别

發布時間:2025/3/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的判别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。