android 整数与ip地址的转换
今天,簡單講講android里如何把整數(shù)與ip地址進行轉(zhuǎn)換。
這個很簡單,在網(wǎng)上查找資料就找到了。這里記錄一下。
1、IP地址轉(zhuǎn)換為整數(shù)
?將IP地址轉(zhuǎn)化成整數(shù)的方法如下:?
??? 1、通過String的indexOf方法找出IP字符串中的點"."的位置。?
??? 2、根據(jù)點的位置,使用String的substring方法把IP字符串分成4段。?
??? 3、使用Long的parseLong方法把子段轉(zhuǎn)化成一個3位整數(shù)。?
??? 4、通過左移位操作(<<)給每一段的數(shù)字加權(quán),第一段的權(quán)為2的24次方,第二段的權(quán)為2的16次方,第三段的權(quán)為2的8次方,最后一段的權(quán)為1?
或者這樣也可以
原理:IP地址每段可以看成是8位無符號整數(shù)即0-255,把每段拆分成一個二進制形式組合起來,然后把這個二進制數(shù)轉(zhuǎn)變成
一個無符號32為整數(shù)。
舉例:一個ip地址為10.0.3.193
每段數(shù)字相對應(yīng)的二進制數(shù)
1000001010
000000000
300000011
19311000001
組合起來即為:00001010000000000000001111000001,轉(zhuǎn)換為10進制就是:167773121,即該IP地址轉(zhuǎn)換后的數(shù)字就是它了。
代碼如下
這里還有一個效率更好的代碼:
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、整數(shù)轉(zhuǎn)換為IP地址
原理:把這個整數(shù)轉(zhuǎn)換成一個32位二進制數(shù)。從左到右,每8位進行一下分割,得到4段8位的二進制數(shù),把這些二進制數(shù)轉(zhuǎn)換成整數(shù)然后加上”。”就是這個ip地址了
舉例:167773121
二進制表示形式為:00001010000000000000001111000001
分割成四段:00001010,00001010,00000011,11000001,分別轉(zhuǎn)換為整數(shù)后加上“。”就得到了10.0.3.193。
代碼如下
這里還有另外的代碼也可以將整數(shù)轉(zhuǎn)成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 整數(shù)與ip地址的轉(zhuǎn)換就講完了。
就這么簡單
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的android 整数与ip地址的转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android jni 返回java类
- 下一篇: android 检测字符串是否为合法域名