1 问题描述
在java中使用DataInputStream类的readByte方法,当读入的是无符号并其值大于127时,读出的数是负数。这样给处理带来极大的不便。
2 解决办法
先byte b = DataInputStream.readByte();读入8位数字,然后在需要真实的byte值时,进行处理:int I = b & 0xff;这样i的值即byte原来真实的值。当然如果中间不需用byte变量,则直接可用用int I = DataInputStream. readUnsignedByte();
3 解决原理
Java中byte是8位有符号数,即其值最大为127,当读入的值大于127时,java就会把最高位当成符号位,例如当读入11110001(241)时,其byte值为-15。所以当要真实值时,则要告知java其最高位不是符号位。
4 附加说明
二进制运算在计算机中的处理方法:二进制表示和加减都是通过补码进行的。
正数的补码是其自身,负数的补码是正数补码取反后加1。
如:-15的计算机表示是:15(00001111),取反:11110000,然后再加1:11110001
如果byte读入的是241(11110001),则计算机则以为是 -15。
分享到:
相关推荐
### Java中流的概念 在Java中,“流”(Stream)是一种用于处理输入输出操作的方式。流分为两大类:输入流和输出流。输入流是从程序外部读取数据的流;而输出流则是向程序外部写入数据的流。这些流通常用于文件操作...
字节流是Java IO流中最基本的流类型,用于处理二进制数据。常用的字节流有: * OutputStream:抽象类,所有字节流的父类。 * FileOutputStream:文件输出流,用于将数据写入文件。 * ByteArrayInputStream:字节...
Java中的流(Stream)是用于处理数据传输的核心概念,主要用于读取或写入数据。流的概念源自于计算机科学中数据处理的模型,它将数据源和数据接收端之间的数据传输抽象为一系列有序的数据单元。在Java中,流可以按照...
Java中的Stream流是一种抽象的数据处理方式,它允许我们以声明性的方式处理数据集合。Stream API自Java 8引入,极大地提升了Java程序员处理数据的效率和代码的简洁性。Stream流与传统的集合操作不同,它并不直接修改...
- **知识点概述**:本知识点介绍了Java中流的概念。 - **详细说明**:流是Java程序中用于处理输入输出的重要概念。它是一种抽象机制,用于表示信息的连续流动。Java中的流分为输入流和输出流两种。输入流用于从数据...
Java中流的使用 - **知识点**: - `FileOutputStream`用于向文件写入字节。 - `FileInputStream`用于从文件读取字节。 - `ByteArrayOutputStream`和`ByteArrayInputStream`分别用于在内存中创建字节数组的输出和...