- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在测试中遇到了这段代码。
byte[] bytes = new byte[] { -1, 1, 0x0 };
InputStream in = new ByteArrayInputStream(bytes);
System.out.println(in.read() + in.read() + in.read());
我预计此代码会返回 0 (-1+1+0),但它会返回 256。
我很纳闷。
谁能解释一下这个行为?
附言
显示第一个语句返回 255。为什么?
最佳答案
试试这段代码,你就会明白为什么。
import java.io.ByteArrayInputStream;
import java.io.InputStream;
public class Test006 {
public static void main(String[] args) throws Exception {
byte[] bytes = new byte[] { -1, 1, 0x0 };
InputStream in = new ByteArrayInputStream(bytes);
System.out.println(in.read());
System.out.println(in.read());
System.out.println(in.read());
}
}
第一个数字被读取为 int 255,因此总和为 256。
值 -1 看起来像一个字节。
1111 1111
显然,当它被读取为一个 int 时,Java 不会添加前导 1
(保留将把它变成 int -1 的符号)但添加
前导零。所以这个 int 变成了:
0000 0000 0000 0000 0000 0000 1111 1111
这是 int 255 而不是 -1。
int -1 看起来像这样:
1111 1111 1111 1111 1111 1111 1111 1111
所以...这就是 int 255 的来源。
关于java - ByteArrayInputStream#read() 负输入字节的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22589528/
关于 ByteArrayInputStream 的文档说: java.io.ByteArrayInputStream.ByteArrayInputStream(byte[] buf) Creates
我想知道是否是 ByteArrayInputStream java.io 包中的类好用吗?或者,如果要通过使用字节数组将其与自己的类进行比较,例如: private int pos = 0; priv
使用 ByteArrayInputStream 和/或 ByteArrayOutputStream 的一些实际领域是什么?也欢迎提供示例。 如果搜索示例,通常会找到如下内容: byte[] buf =
我正在研究流媒体网络摄像头。 现在我可以进行 1:1 TCP 网络摄像头通信。 问题是即使 gc 运行,堆内存也不会减少。 我尝试了重置(),刷新(),关闭()。 一切看起来都很好,但 new Byt
我有方法返回将显示为文本字符串的值。所以我正在做的是转换为 ByteArrayInputStream。 public String method() { inputStream = new B
假设一个函数如下: InputStream func() { byte[] buffer = new byte[] {0,1,2,3}; return
我只是想弄清楚 ByteArrayInputStream 中的字节类型。在一种情况下,我存储一个byte[],在另一种情况下,我存储一个Hashmap。以下代码仅在 byte[] 的情况下在 Obje
java.io 类太多了,对于其中一些我真的不明白什么时候需要它们,例如: 字节数组输入流、字节数组输出流 序列输入流, PushbackInputStream、PushbackReader 字符串读
基本上我使用(在groovy中)以下结构: InputStream in = new ByteArrayInputStream("one two three four".getBytes()); 但是
我将使用 Jsch ssh 到另一台服务器 并检查路径是否存在 但是我发现baos.toString() 将在终端上打印出所有结果: test -d /root/bin/python || echo
我正在使用一个 ByteArrayInputStream,它包含一个 XML 文档,该文档由一个元素组成,元素的内容是一个大的 base 64 编码字符串。我需要删除周围的标签,以便解码文本并将其输出
首先,在下面的代码中,我试图做的是使用“byteBuffer[0].length”找到二维字节数组的长度,但它实际上不起作用。当我打印 'byteBuffer[0].length' 时,它给出的输出为
我正在尝试通过 telnet 与 Windows 服务器中的应用程序进行交互,因此我使用的是 TelnetClient() 方法。我可以使用 System.in.read() 进行交互(发送命令和检索
我有一个 JPA AttributeConverter,用于将 String 转换为 gzipped byte[] 并返回。 转换方法相当简单: public byte[] convertToData
我正在尝试以 blob 数据格式 ([B@e96bf) 加载 MySQL 数据库中的图像,但无法将其加载到 JLabel,如下所示。它显示 ByteArrayInputStream 为空。 byte[
我想从 ByteArrayInputStream 获取内部字节数组。我不想扩展该类或将其写入另一个字节数组。有实用程序类可以帮助我做到这一点吗? 谢谢, 最佳答案 您无法访问相同的字节数组,但您可以轻
我在测试中遇到了这段代码。 byte[] bytes = new byte[] { -1, 1, 0x0 }; InputStream in = new ByteArrayInputStream(by
以下是在处理文件之前将整个文件读入内存的三种方法: 方法一: fis = new FileInputStream(file); bis = new BufferedInputStream(fis);
我有一个 ByteArrayInputStream 形式的图像。我想把它做成我可以保存到我的文件系统中某个位置的东西。 我一直在兜圈子,你能不能帮帮我。 最佳答案 如果您已经在使用 Apache co
我读过 this post但我不关注。我看过this但还没有看到使用 ByteArrayOutputStream 将 ByteArrayInputStream 转换为 String 的正确示例。 要将
我是一名优秀的程序员,十分优秀!