问答详情
源自:2-1 Java 中的 InetAddress 的应用

通过InetAddress 获取字节数组IP时 byte[] bytes = address.getAddress();,出现负数

InetAddress address = InetAddress.getLocalHost();

System.out.println("主机ip地址:"+address.getHostAddress());

System.out.println("主机名称:"+address.getHostName());

byte[] bytes = address.getAddress();

System.out.println("字节数组型的IP地址"+Arrays.toString(bytes));

输出:

主机ip地址:192.168.119.35

主机名称:WIN-R5PAKVOQ0S5

字节数组型的IP地址[-64, -88, 119, 35]


问题:

字节数组型的IP地址[-64, -88, 119, 35]

为什么会出现  -64  -88 现象

提问者:格子外套 2017-02-08 15:57

个回答

  • 向上看
    2017-03-04 14:31:40

    这是因为一个byte只能表示8位,而第一位是符号位,第一位0表示正,第一位1表示负。(例如:192换成2进制就是 11000000,因为第一位是‘1’故为负数,值=(符号位不变,其他取反加1)=64),不懂得话就网上查查原码和补码

  • qq_暮雪朝阳_0
    2017-02-08 19:08:36

    这个是因为存储的是byte,而byte本身取值范围已经决定了

  • 慕粉4353249
    2017-02-08 18:44:00

    byte的取值范围是-128~127,怎么解释你应该明白了吧!

  • 邸琪
    2017-02-08 17:57:51

    同问 找到原因了吗