2010-02-02 76 views
3

我有這樣的代碼:Java:InputStream read()返回一個大於127的字節?

InputStream is = socket.getInputStream(); 
int b; 
while ((b = is.read()) != -1) 
{ 
    System.out.println(b); 
} 

字節的範圍是-128直到+127
但其中一個打印字節是210

這是將讀取的byte轉換爲int的結果?
(這樣negatif byte成爲positif int
如果是的話,我可以通過轉換intbyte做同樣的(帶有OutputStream)?

感謝,
馬亭

回答

9

其實read返回一個整數..

public abstract int read() throws IOException 

所以它implictly通過將其存儲在一個int鑄造是無符號字節。

如文檔指出:

讀取數據從 輸入流的下一個字節。值字節爲 ,返回範圍爲0到 之間的整數。如果由於已達到流末尾的 而沒有可用的字節,則返回值-1。

想一想如果它是一個有符號的字節,那麼-1不能用作流結束值。

OutputStream你有

public abstract void write(int b) throws IOException 

,並通過文件執行表示將採取通過整數8個低位..

相關問題