gpt4 book ai didi

Android - API 12 弃用 Formatter.formatIPAddress

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:49 26 4
gpt4 key购买 nike

我看到该方法已被弃用,替换应该是 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com