2014-01-09 88 views
0

我遇到了問題。我以這種方式在我的應用程序中顯示網絡信息:網絡信息android ip倒置問題

// Some wifi info 
     d=wifiManager.getDhcpInfo(); 

     s_dns1="DNS 1: "+intToIp(d.dns1); 
     s_dns2="DNS 2: "+intToIp(d.dns2);  
     s_gateway="Default Gateway: "+intToIp(d.gateway);  
     s_ipAddress="IP Address: "+intToIp(d.ipAddress); 
     s_leaseDuration="Lease Time: "+String.valueOf(d.leaseDuration);  
     s_netmask="Subnet Mask: "+intToIp(d.netmask);  
     s_serverAddress="Server IP: "+intToIp(d.serverAddress); 

當然全部使用wifiManager。現在我要值

public String intToIp(int i) { 

     return ((i >> 24) & 0xFF) + "." + 
      ((i >> 16) & 0xFF) + "." + 
      ((i >> 8) & 0xFF) + "." + 
      (i & 0xFF) ; 
     } 

它可以轉換的方法..而是顯示:192.168.0.0它顯示0.0.168.192 ..我該如何解決?

+0

除了將訂單更改爲i,i >> 8等? – user3125280

+0

另請參閱http://developer.android.com/reference/android/text/format/Formatter.html#formatIpAddress(int) – laalto

回答

2

只需翻轉你的intToIp方法:

public String intToIp(int i) { 
    return (i & 0xFF) + "." + 
     ((i >> 8) & 0xFF) + "." + 
     ((i >> 16) & 0xFF) + "." + 
     ((i >> 24) & 0xFF); 
} 
+0

非常感謝您 –

0

基本上你已經解決了這個問題。字節以小端符號排列,這意味着最高有效字節(192)位於最後位置。你所期望的是「人類」使用的大端。

你可能會讀到關於排序here

只是逆轉你提取每個字節的順序,你就完成了。