InetAddress.getLocalHost().getHostAddress() 和 InetAddress.getLocalHost().getAddress() 有什么区别?
What's the difference between InetAddress.getLocalHost().getHostAddress() and InetAddress.getLocalHost().getAddress()?
代码如下:
`InetAddress me = InetAddress.getLocalHost();
System.out.println("Local host address: " + me.getHostAddress());
System.out.println("Adress: " + Arrays.toString(me.getAddress()));`
而且两个输出的地址不一样,为什么?
或者更好的问题:这两者有什么区别?
getHostAddress()
和getAddress()
returns一样的信息,只是信息表示方式不同而已。
getHostAddress()
returns 字符串,这是人类可读的文本。比如在我的电脑里是"192.168.29.106"
.
getAddress()
,另一方面,returns 一个字节数组(在 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
,它们是一回事
代码如下:
`InetAddress me = InetAddress.getLocalHost();
System.out.println("Local host address: " + me.getHostAddress());
System.out.println("Adress: " + Arrays.toString(me.getAddress()));`
而且两个输出的地址不一样,为什么?
或者更好的问题:这两者有什么区别?
getHostAddress()
和getAddress()
returns一样的信息,只是信息表示方式不同而已。
getHostAddress()
returns 字符串,这是人类可读的文本。比如在我的电脑里是"192.168.29.106"
.
getAddress()
,另一方面,returns 一个字节数组(在 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
,它们是一回事