我有这段代码:
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
)吗?
谢谢,
马亭
答案 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个低位。