网络信息android ip倒置问题

时间:2014-01-09 12:40:36

标签: java android networking wifimanager

我遇到了问题。我正在以这种方式在我的应用程序中显示网络信息:

// 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 ..我怎么解决?

2 个答案:

答案 0 :(得分:2)

只需反转你的intToIp方法:

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

答案 1 :(得分:0)

基本上你已经解决了它。字节以小端符号排列,这意味着最高有效字节(192)位于最后位置。您期望的是大端,由“人类”使用。

您可能会阅读有关Endianness here的内容。

只需颠倒提取每个字节的顺序即可完成。