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),如果无符号则表示 16829代表字节0x1D106代表字节0x6A.

"192.168.29.106"0xC0 0xA8 0x1D 0x6A,它们是一回事