我想知道如何從DhcpInfo.ipAddress獲得一個人類可讀的IP地址?棘手的事情是,它是一個整數,顯然你不能在一個整數中存儲IP地址。那麼,IP地址如何編碼,它可以存儲在一個int?文檔不給任何幫助解決這個問題:http://developer.android.com/reference/android/net/DhcpInfo.html#ipAddress感謝:-)人類可讀的DhcpInfo.ipAddress?
回答
顯然你不能在一個整數
實際存儲的IP地址,這是所有的IP(V4)地址是 - 一個32位整數(在IPv6的情況下是128位)。
你正在談論的「人類可讀」格式是通過將整數位分成8個稱爲「八位位組」的字符串並轉換爲基數10來產生的。 「192.168.0.1
」。
該地址的比特將是如下(添加的可讀性空格):
11000000 10101000 00000000 00000001
其對應於十進制整數3232235521。
你其實可以。
作爲int的IP地址是:AABBCCDD
並且以人類可讀的形式,它是AA.BB.CC.DD
但是以十進制爲基礎。正如你所看到的,你可以使用按位操作或將int轉換爲字節數組輕鬆地提取它們。
看到的畫面:
真棒圖解說明這一點,謝謝!只是希望,它會包含在android文檔中。 – 2011-06-14 15:05:51
正如其他海報所提到的,一個IP地址是可裝在一個INT 4個字節。安德烈給出了一個很好的例子,顯示瞭如何。如果將它存儲在InetAddress對象中,則可以使用ToString()獲取人類可讀版本。喜歡的東西:
byte[] bytes = BigInteger.valueOf(ipAddress).toByteArray();
InetAddress address = InetAddress.getByAddress(bytes);
String s = address.ToString();
不幸的是,IP地址的順序錯誤,例如192.168.101.102將輸出爲102.101.168.192。至少使用WifiInfo.getIPAddress()。反過來使用(通過)Ace的字節轉換。 – 2013-11-06 13:32:46
使用此功能 NetworkUtils.java \構架\基地\核心\ java的\機器人\ NET)
public static InetAddress intToInetAddress(int hostAddress) {
byte[] addressBytes = { (byte)(0xff & hostAddress),
(byte)(0xff & (hostAddress >> 8)),
(byte)(0xff & (hostAddress >> 16)),
(byte)(0xff & (hostAddress >> 24)) };
try {
return InetAddress.getByAddress(addressBytes);
} catch (UnknownHostException e) {
throw new AssertionError();
}
}
只是反向您以字節爲單位收到ip地址
byte[] bytes = BigInteger.valueOf(ipAddress).toByteArray();
ArrayUtils.reverse(bytes);
// then
InetAddress myaddr = InetAddress.getByAddress(ipAddress);
String ipString = myaddr.getHostAddress();
- 1. Wicket人類可讀的URL
- 2. htaccess的人類可讀
- 3. pysnmp mac到人類可讀
- 4. Python的人類可讀的時間差
- 5. Scala的人類可讀的XML輸出?
- 6. 人類可讀文件類型
- 7. 人類可讀的日期格式
- 8. 蟒蛇人類可讀的大量
- 9. 瀏覽器中的人類可讀json
- 10. 人類可讀時間的格式? JavaScript
- 11. objective-c NSFilePosixPermissions到人類可讀的NSString
- 12. 顯示人類可讀的時間 - PHP
- 13. 人類可讀的日期爲DateTime
- 14. 人類可讀的替代CSV
- 15. Newtonsoft.Json.Schema.Generation:人類可讀的「定義」部分
- 16. JSON人類可讀的正確格式
- 17. 人類可讀的文件大小
- 18. clojure.spec人類可讀的形狀?
- 19. ASP.NET MVC的人類可讀URL方案
- 20. 微秒到人類可讀的輸出
- 21. bytes/hexa爲人類可讀值?
- 22. 人類可讀UTC日期時間
- 23. 印刷字典(JSON)人類可讀
- 24. Java TCP Socket - 人類可讀取輸出
- 25. 自動人類可讀時間間隔
- 26. XSD驗證錯誤人類可讀
- 27. 有dmesg打印人類可讀時間
- 28. 將數據從datetimepicker(人類可讀)轉換爲Time類(機器可讀)
- 29. 唯一的,人類可讀的從類屬性ID
- 30. 給插件類一個人類可讀的名字
謝謝,我顯然也習慣了人類可讀的格式;-) – 2011-06-14 15:06:10