代码如下:
`InetAddress me = InetAddress.getLocalHost();
System.out.println("Local host address: " + me.getHostAddress());
System.out.println("Adress: " + Arrays.toString(me.getAddress()));`
两个输出的地址不同,为什么?
还是一个更好的问题:两者之间有什么区别?
答案 0 :(得分:1)
getHostAddress()
和getAddress()
返回相同的信息,它们之间的唯一区别是信息表示形式。
getHostAddress()
返回String,这是人类可读的文本。例如,在我的计算机上,它是"192.168.29.106"
。
getAddress()
则返回字节数组(对于IPv4,则为4字节)。例如,在我的计算机中,它是[-64, -88, 29, 106]
--64
是字节0xC0 (11000000)
的有符号表示,它指示192
是否为无符号,而-88
表示0xA8 (10101000)
,如果未签名则表示168
。 29
代表字节0x1D
,106
代表字节0x6A
。
"192.168.29.106"
或0xC0 0xA8 0x1D 0x6A
,它们是同一回事。