【发布时间】:2017-03-27 06:59:44
【问题描述】:
这可能是显而易见的,但我错过了。为什么我需要用 0xff 执行 AND 来获取 IP 地址?我看到它的方式是完全一样的,用 0xff 执行 AND 应该使位保持不变,那么如果我不执行 AND 操作,为什么它不起作用?
package com.inet.ex1;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class ShowIP {
public static void main(String[] args) {
InetAddress host;
try {
host = InetAddress.getLocalHost();
byte[] ip = host.getAddress();
for (int i = 0; i < ip.length; i++) {
if (i == 0) System.out.print(ip[i] & 0xff);
else System.out.print("." + (ip[i] & 0xff));
}
} catch (UnknownHostException e) {
System.out.println(e);
}
}
}
【问题讨论】:
-
“不起作用”是什么意思?您得到什么结果或错误,预期结果是什么?
-
对不起,它有效,但它显示负数!
-
根据您的描述,看起来真正的问题是
& 0xff在 Java 中的作用。标记的副本应该回答这个问题。如果我误解了您或该问题没有回答您的问题,请通过 @yshavit 提及我,我可以重新打开它 - 但在这种情况下,请说明您要查找的其他信息。 -
哦,注意
PrintStream.print(byte)没有重载,所以当你传入一个字节时,它会转换为一个 int,然后传递给print(int)。这可能是您理解中缺失的部分内容。
标签: java localhost inetaddress