gpt4 book ai didi

java - 为什么 BufferedOutputStream 中的字节转换没有达到预期效果?

转载 作者:行者123 更新时间:2023-12-02 01:49:54 33 4
gpt4 key购买 nike

我正在使用以下 Java 代码将一个字节写入文件 fileoutput.txt:

FileOutputStream fos=new FileOutputStream("C:/tests/fileoutput.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);

bos.write(153);
bos.flush();

为了检查文本文件中保存了哪些字节,我在十六进制编辑器中打开了它。在那里我看到程序按照预期写入了正确的字节 = 153。

但是后来我打开了 BufferedOutputStream 类中 write() 方法的源代码。此方法采用参数中的 int 并执行从 intbyte 的转换。

当java进行此操作时,我希望程序返回不同的字节,与原始字节不相似,因为在java中,字节类型的最大值为127。当我执行显式强制转换byte b =(int)153 b 字段变为等于 -103。

为什么 BufferedOutputStream 类中的 write() 方法的转换不同?

最佳答案

153和-103的二进制表示是相同的。因此,正确的十六进制值最终出现在文件中。

阅读二进制补码以获取更多信息:https://en.m.wikipedia.org/wiki/Two%27s_complement

关于java - 为什么 BufferedOutputStream 中的字节转换没有达到预期效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53139437/

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