我遇到了问题。我正在以这种方式在我的应用程序中显示网络信息:
// 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 :(得分:2)
只需反转你的intToIp方法:
public String intToIp(int i) {
return (i & 0xFF) + "." +
((i >> 8 ) & 0xFF) + "." +
((i >> 16) & 0xFF) + "." +
((i >> 24) & 0xFF);
}
答案 1 :(得分:0)
基本上你已经解决了它。字节以小端符号排列,这意味着最高有效字节(192)位于最后位置。您期望的是大端,由“人类”使用。
您可能会阅读有关Endianness here的内容。
只需颠倒提取每个字节的顺序即可完成。