2010-02-02 4 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)
Если да, то я могу сделать то же самое (с OutputStream) путем преобразования int в byte?

Спасибо,
Мартейн

ответ

9

read На самом деле возвращает целое число ..

public abstract int read() throws IOException 

так это неявно отливают быть байт без знака, сохраняя его в междунар.

Как указано в документации:

Читает следующий байт данных из входного потока в. Байт значения равен , возвращаемому как int в диапазоне от 0 до 255. Если байт недоступен, так как конец потока достиг , возвращается значение -1.

Подумайте, что если это подписанный байт, то -1 не может использоваться как значение конца потока.

Для OutputStream у вас есть

public abstract void write(int b) throws IOException 

и как заявлено реализации документации будет принимать 8 бит низкого порядка целочисленного прошло ..

Смежные вопросы