Java:InputStream read()返回一个大于127的字节?

时间:2010-02-02 17:11:57

标签: java io int byte

我有这段代码:

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)吗?

谢谢,
马亭

1 个答案:

答案 0 :(得分:9)

实际上read会返回一个整数..

public abstract int read() throws IOException

所以通过将它存储在int中来暗示它是无符号字节。

如文件中所述:

  

从中读取下一个数据字节   输入流。值字节是   以0到0的范围内返回int   255.如果没有字节可用,因为流的末尾已经存在   到达时,返回值-1。

考虑一下如果它是一个有符号的字节,那么-1就不能用作流值的结尾。

对于OutputStream你有

public abstract void write(int b) throws IOException

并且如文档实现所述,将传递整数传递的8个低位。