int数据类型在计算机里面占用4个字节一个字节是8个二进制位,1 int = 4 * byte
当用输入流读取一些媒体、图像文件时,这些文件里的数据正是常说的二进制数据即:01串
那么用read()读取文件数据时是一个字节一个字节读取的,读一个字节相当于读了八个二进制位,因已到达流末尾而没有可用的字节,则返回值 -1.而文件中任何一个字节位置都有可能是11-11-11-11八个一,
11-11-11-11这是一个字节这个字节转换成十进制时表示-1,-1用一个int类型来接收是被提升了还是-1,但是用四个字节来表示即:
11111111-->11111111-11111111-11111111-11111111,
如果提升的时候前面不补1补0,这时候表示-1的一个字节被提升到int类型4个字节就不是-1了,即:255
11111111-->00000000-00000000-00000000-11111111
那么只要在前面补0,既可以保留原字节数据不变,又可以避免-1的出现。
接下来就是怎样才能按前面补0这种方法将独到的字节提升到int类型的呢?
11111111-11111111-11111111-11111111
&00000000-00000000-00000000-11111111
-----------------------------------------
00000000-00000000-00000000-11111111
即将读取的那个字节&上255即可。
因此RandomAccessFile.read()只读的是一个字节返回的是一个int。。。。 |