I've this code:
InputStream is = socket.getInputStream();
int b;
while ((b = is.read()) != -1)
{
System.out.println(b);
}
A byte its range is -128
until +127
.
But one of the printed bytes is 210
.
Is this the result of converting the read byte
to an int
?
(So that the negatif byte
becomes a positif int
)
If so, can I do the same (with an OutputStream
) by converting an int
to a byte
?
Thanks,
Martijn
Actually read
returns an integer..
public abstract int read() throws IOException
so it's implictly casted to be unsigned byte by storing it in an int.
As stated in documentation:
Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned.
Think about the fact that if it's a signed byte then -1
couldn't be used as end of stream value.
For OutputStream
you have
public abstract void write(int b) throws IOException
and as stated by documentation implementation will take 8 low order bits of the integer passed..
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.