我有这个代码:
InputStream is = socket.getInputStream();
int b;
while ((b = is.read()) != -1)
{
System.out.println(b);
}
Run Code Online (Sandbox Code Playgroud)
一个字节,其范围是-128直到+127.
但其中一个打印的字节是210.
这是将读取byte转换为int?的结果?
(因此,negatif byte成为一个positif int)
如果是这样,我可以OutputStream通过将inta 转换为a 来做同样的事情byte吗?
谢谢,
Martijn
实际上read返回一个整数..
public abstract int read() throws IOException
Run Code Online (Sandbox Code Playgroud)
因此,通过将其存储在int中,它被隐含地转换为无符号字节.
如文件中所述:
从输入流中读取下一个数据字节.值字节作为int返回,范围为0到255.如果没有字节可用,因为已到达流的末尾,则返回值-1.
想想如果它是一个带符号的字节,则-1不能用作流值的结尾.
对OutputStream你有
public abstract void write(int b) throws IOException
Run Code Online (Sandbox Code Playgroud)
并且如文档实现所述,将传递整数的8个低位.
| 归档时间: |
|
| 查看次数: |
1917 次 |
| 最近记录: |