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?
或者這樣也可以
原理:IP地址每段可以看成是8位無符號整數即0-255,把每段拆分成一個二進制形式組合起來,然后把這個二進制數轉變成
一個無符號32為整數。
舉例:一個ip地址為10.0.3.193
每段數字相對應的二進制數
1000001010
000000000
300000011
19311000001
組合起來即為:00001010000000000000001111000001,轉換為10進制就是:167773121,即該IP地址轉換后的數字就是它了。
代碼如下
這里還有一個效率更好的代碼:
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。
代碼如下
這里還有另外的代碼也可以將整數轉成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地址的转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android jni 返回java类
- 下一篇: android 检测字符串是否为合法域名