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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

android 整数与ip地址的转换

發布時間:2024/4/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 整数与ip地址的转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.




今天,簡單講講android里如何把整數與ip地址進行轉換。


這個很簡單,在網上查找資料就找到了。這里記錄一下。


1、IP地址轉換為整數


?將IP地址轉化成整數的方法如下:?
??? 1、通過String的indexOf方法找出IP字符串中的點"."的位置。?
??? 2、根據點的位置,使用String的substring方法把IP字符串分成4段。?
??? 3、使用Long的parseLong方法把子段轉化成一個3位整數。?
??? 4、通過左移位操作(<<)給每一段的數字加權,第一段的權為2的24次方,第二段的權為2的16次方,第三段的權為2的8次方,最后一段的權為1?


//將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];}


或者這樣也可以

原理:IP地址每段可以看成是8位無符號整數即0-255,把每段拆分成一個二進制形式組合起來,然后把這個二進制數轉變成
一個無符號32為整數。
舉例:一個ip地址為10.0.3.193
每段數字相對應的二進制數
1000001010
000000000
300000011
19311000001
組合起來即為:00001010000000000000001111000001,轉換為10進制就是:167773121,即該IP地址轉換后的數字就是它了。
代碼如下

publicclassIp{ publicstaticvoidmain(String[]args){ System.out.print(ip2int("10.0.3.193")); } publicstaticlongip2int(Stringip){ String[]items=ip.split("."); returnLong.valueOf(items[0])<<24 |Long.valueOf(items[1])<<16 |Long.valueOf(items[2])<<8 |Long.valueOf(items[3]); } }


這里還有一個效率更好的代碼:

public long ipToLong(String ipAddress) {long result = 0;String[] ipAddressInArray = ipAddress.split("\\.");for (int i = 3; i >= 0; i--) {long ip = Long.parseLong(ipAddressInArray[3 - i]);//left shifting 24,16,8,0 and bitwise OR//1. 192 << 24//1. 168 << 16//1. 1 << 8//1. 2 << 0result |= ip << (i * 8);}return result;}



2、整數轉換為IP地址
原理:把這個整數轉換成一個32位二進制數。從左到右,每8位進行一下分割,得到4段8位的二進制數,把這些二進制數轉換成整數然后加上”。”就是這個ip地址了
舉例:167773121
二進制表示形式為:00001010000000000000001111000001
分割成四段:00001010,00001010,00000011,11000001,分別轉換為整數后加上“。”就得到了10.0.3.193。
代碼如下

publicclassIp{ publicstaticvoidmain(String[]args){ System.out.print(int2ip(167773121)); } publicstaticStringint2ip(longipInt){ StringBuildersb=newStringBuilder(); sb.append(ipInt&0xFF).append("."); sb.append((ipInt>>8)&0xFF).append("."); sb.append((ipInt>>16)&0xFF).append("."); sb.append((ipInt>>24)&0xFF); return sb.toString(); } }


這里還有另外的代碼也可以將整數轉成IP

//ip = 3232235778public String longToIp(long ip) {StringBuilder result = new StringBuilder(15);for (int i = 0; i < 4; i++) {result.insert(0,Long.toString(ip & 0xff));if (i < 3) {result.insert(0,'.');}ip = ip >> 8;}return result.toString();}//ip = 3232235778public String longToIp2(long ip) {return ((ip >> 24) & 0xFF) + "." + ((ip >> 16) & 0xFF) + "." + ((ip >> 8) & 0xFF) + "." + (ip & 0xFF);}



android 整數與ip地址的轉換就講完了。


就這么簡單

 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的android 整数与ip地址的转换的全部內容,希望文章能夠幫你解決所遇到的問題。

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