是負值的原因建議去了解一個,源碼、反碼、補碼的概念。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