是负值的原因建议去了解一个,源码、反码、补码的概念。IP地址是INT 类型的例如: 130在计算机中表示二进制位
00000000 00000000 00000000 10000010 ,当它存入到字节数组中,由于一个字节有8位故,存入后130为 10000010
而二进制中最高位为符号位 (0代表整数,1代表负数),所以1000 0010表示的是一个负数,负数在计算机中是用的补码表示的,要求的源码,1000 0010 要先 -1 得:1000 0001 在求反后得其源码,0111 1110 转化为10进制为 -126.
00000000 00000000 00000000 10000010 ,当它存入到字节数组中,由于一个字节有8位故,存入后130为 10000010
而二进制中最高位为符号位 (0代表整数,1代表负数),所以1000 0010表示的是一个负数,负数在计算机中是用的补码表示的,要求的源码,1000 0010 要先 -1 得:1000 0001 在求反后得其源码,0111 1110 转化为10进制为 -126.
2016-05-16
socket.shutdownInput();不是已经关闭输入流了么,为什么is.close()还需要写么?
2016-05-10
因为byte类型是带符号的,要用System.out.println("字节数组形式的IP:"+Arrays.toUnsignedString(bytes));才会得到正整数输出
2016-05-07