getIpAddress()方法返回IPv4的整数表示?

时间:2014-11-07 13:52:21

标签: android android-wifi connectivity

在下面的代码中,我试着获取他的IP网络,但是我从info.getIpAddress();得到的是

-25576378

为什么呢?这是什么?

代码

WifiInfo info = mWiFiMgr.getConnectionInfo();
String ssid;
int strength = WifiManager.calculateSignalLevel(info.getRssi(), 5);
String unit = WifiInfo.LINK_SPEED_UNITS;
int ip_add = info.getIpAddress();
int speed = info.getLinkSpeed();

1 个答案:

答案 0 :(得分:6)

您可以使用此方法获取ip字符串:

private static String getIpAddress(WifiInfo wifiInfo) {
    String result;
    int ip = wifiInfo.getIpAddress();

    result = String.format("%d.%d.%d.%d", (ip & 0xff), (ip >> 8 & 0xff), (ip >> 16 & 0xff),
            (ip >> 24 & 0xff));

    return result;
}

wifiInfo.getIpAddress()返回一个整数。这是可能的,因为 IPv4地址包含4个字节(fe 192.168.255.2 ==> 4倍1字节),就像在Java中整数消耗4个字节一样/ Android系统。通过移动给定的整数,您可以确定每个ip的字节值。