gpt4 book ai didi

java - java中InputStream中的read函数如何读取一个字节并将其作为int返回?

转载 作者:行者123 更新时间:2023-12-01 07:48:19 25 4
gpt4 key购买 nike

read()函数一次读取一个字节,该函数的返回类型为int。我想知道幕后发生了什么,以便该字节作为 int 返回。我对按位运算符一无所知,所以任何人都可以以我容易掌握的方式回答。

最佳答案

这取决于流的实现。在某些情况下,方法实现是在 native 代码中。在其他情况下,逻辑很简单;例如,在 ByteArrayInputStream 中,read() 方法执行以下操作:

public class ByteArrayInputStream extends InputStream {
protected byte buf[];
protected int count;
protected int pos;

...

public synchronized int read() {
return (pos < count) ? (buf[pos++] & 0xff) : -1;
}
}

换句话说,字节被转换为 0 到 255 范围内的整数,如 javadoc 中所述,并且在逻辑流结束时返回 -1。

buf[pos++] & 0xff逻辑如下:

  1. buf[pos++] 转换为 int
  2. & 0xff 将有符号整数(-128 到 +127)转换为表示为整数的“无符号”字节(0 到 255)。

关于java - java中InputStream中的read函数如何读取一个字节并将其作为int返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44983653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com