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

来源:2-1 Java 中的 InetAddress 的应用

格子外套

2017-02-08 15:57

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 现象

写回答 关注

4回答

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

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

    慕田峪161...

    为什么要转成它的补码的形式呢

    2017-09-16 11:21:10

    共 3 条回复 >

  • 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

    同问 找到原因了吗

Java Socket应用---通信是这样练成的

分享的是 Java 中的网络编程,使用Socket实现网络聊天通信

125013 学习 · 590 问题

查看课程

相似问题