gpt4 book ai didi

java - InputStream.read() 返回的 int 值代表什么?

转载 作者:行者123 更新时间:2023-11-30 09:00:20 25 4
gpt4 key购买 nike

文档说 read() 返回 byte 作为 0 之间的 int 值255

这个值代表什么?

最佳答案

在二进制补码中,数字 -1 由设置为 1 的所有位表示。

这里是-1的字节值:*

1111 1111

这里是 -1 的 int 值:*

1111 1111 1111 1111 1111 1111 1111 1111

如果我们取-1的字节值,在不扩展符号的情况下,把它存入一个int,就变成了255:

0000 0000 0000 0000 0000 0000 1111 1111

这只是二进制补码的行为。在 int 中存储字节会留下剩余的位,我们可以用它来表示其他东西。

所以输入流返回0-255的字节值,-1表示流结束。要获取字节值,请将 int 转换为字节:

int byteAsInt = inputStream.read();
if(byteAsInt > -1) {
byte byteValue = (byte)byteAsInt;

// use the byte
}

int 值 128-255 在转换为字节时将被解释为负数。或者,您可以对 int 执行“无符号”算术。

字节本身可以表示任何内容。例如,如果它们来自 .txt 文件,则它们可能是直接的 ASCII 代码。其他格式可能要复杂得多。


* 4.2:

The integral types are byte, short, int, and long, whose values are 8-bit, 16-bit, 32-bit and 64-bit signed two's-complement integers, respectively […].

关于java - InputStream.read() 返回的 int 值代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26836951/

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