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
)
如果是这样,我可以通过将int
转换为byte
来做同样的事情(使用OutputStream
)吗?
谢谢,
马亭
实际上read
返回一个整数..
public abstract int read() throws IOException
因此,通过将其存储在int中,它被隐含地转换为无符号字节。
如文件中所述:
从输入流中读取下一个数据字节。 值字节作为int返回,范围为0到255.如果没有字节可用,因为已到达流的末尾,则返回值-1。
想想如果它是一个有符号的字节,则-1
不能用作流值的结尾。
对于OutputStream
你有
public abstract void write(int b) throws IOException
并且如文档实现所述,将传递整数的8个低位。