- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我看到该方法已被弃用,替换应该是 getHostAddress()。
我的问题是 getHostAddress 如何替代?我似乎无法让它做任何类似的事情。
我想做的是采用子网掩码的整数表示并将其转换为字符串。
formatIPAddress 完美地做到了这一点。
例如,我的子网掩码是“255.255.255.192”。 WifiManager 返回的整数值为 105696409。formatIPAddress 正确返回此值。
我似乎无法让 getHostAddress 正常工作,更不用说将整数值转换为子网掩码字符串了。
有效的示例代码
WifiManager wm = (WifiManager) MasterController.maincontext.getSystemService(Context.WIFI_SERVICE);
DhcpInfo wi = wm.getDhcpInfo();
int ip = wm.getDhcpInfo().ipAddress;
int gateway = wm.getDhcpInfo().gateway;
int mask = wm.getDhcpInfo().netmask;
String maskk = Formatter.formatIpAddress(mask);
有人有这方面的经验吗?我可以从格式化程序类中获取源代码并直接使用它。但我只想使用新方法。
最佳答案
您必须将 int 转换为 byte[],然后使用该数组来实例化 InetAddress:
...
int ipAddressInt = wm.getDhcpInfo().netmask;
byte[] ipAddress = BigInteger.valueOf(ipAddressInt).toByteArray();
InetAddress myaddr = InetAddress.getByAddress(ipAddress);
String hostaddr = myaddr.getHostAddress(); // numeric representation (such as "127.0.0.1")
现在我看到格式化程序需要小端,而 bigInteger.toByteArray() 返回大端表示,因此 byte[] 应该反转。
关于Android - API 12 弃用 Formatter.formatIPAddress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17055946/
我在我的应用程序中使用了此代码,但警告说:“Formatter 类型的方法 formatIpAddress(int) 已弃用” android.text.format.Formatter.format
我看到该方法已被弃用,替换应该是 getHostAddress()。 我的问题是 getHostAddress 如何替代?我似乎无法让它做任何类似的事情。 我想做的是采用子网掩码的整数表示并将其转换为
我是一名优秀的程序员,十分优秀!