第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

怎么不能用int[]接收getAddress()?

byte[]來存IP地址不夠啊,超過128變-負(fù)的了,Java就是規(guī)定只能用byte嗎,怎么用int[]j接收getAddress()報(bào)錯(cuò)呢??

正在回答

4 回答

首先InetAddress.getLocalHost() 這個(gè)方法返回的就是byte[]數(shù)組,這個(gè)沒法改。

其次ipv4是4個(gè)0-255間的整數(shù)組成的,byte是1字節(jié)8 位,正好滿足(2的8次方=256),所以用byte去接是合適的。

但由于java中沒有unsigned的類型,所有數(shù)都是帶有正負(fù)位的,所以最高位的 1 將會被解釋為符號位,另外 Java 中存儲是按照補(bǔ)碼存儲,如果是地址中一個(gè)是135,轉(zhuǎn)二進(jìn)制?1000 0111 ,這會被java認(rèn)為是補(bǔ)碼形式,轉(zhuǎn)換成原碼便是 1111 0001,轉(zhuǎn)換成十進(jìn)制數(shù)便是 -121。

你沒法使用byte直接輸出地址,必須轉(zhuǎn)為更高級的類型。將 byte 數(shù)組中的值與 0xFF 按位與(&),過程中 byte 會隱式類型轉(zhuǎn)換為 int,當(dāng)與 0xFF 按位與的時(shí)候,會將除了低 8 位的其他位全部置 0,這樣一來便將符號擴(kuò)展的那些高位清除掉了。

2 回復(fù) 有任何疑惑可以回復(fù)我~

明白了 ?Thx

0 回復(fù) 有任何疑惑可以回復(fù)我~

用byte去接還不是一樣么,你要另起一個(gè)int[]去接

0 回復(fù) 有任何疑惑可以回復(fù)我~
InetAddress?myInetAddess;
byte[]?byteArray=new?byte[myInetAddress.getAddress()]
for(int?i=0;i<myInetAddress.getAddress();i++){
byte[i]=byte[i]&(0xFF);//也就是說四個(gè)中只要有一個(gè)字節(jié)最高位為1的時(shí)候就需要這么隱式轉(zhuǎn)換嗎?
}


0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

怎么不能用int[]接收getAddress()?

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號