黑马程序员技术交流社区

标题: 复制mp3文件时,myRead()返回类型为什么是int而不是byte类型 [打印本页]

作者: smile2015    时间: 2015-4-1 18:23
标题: 复制mp3文件时,myRead()返回类型为什么是int而不是byte类型
public int myRead()throws IOException
    {
            //通过in对象读取硬盘上数据,并存储buf中。
            if(count==0)//当取光
            {
                    count=in.read(buf);//往数组里装数据
                    if(count<0)
                            return -1;
                    pos=0;//指针遍历数组
                    byte b=buf[pos];//取了第一个元素
                    count--;
                    pos++;
                    return b&255;
                   
            }
            else if(count>0)
            {
                    byte b = buf[pos];

                        count--;
                        pos++;
                        return b&0xff;
            }return -1;
           
    }
作者: 戴祺    时间: 2015-4-1 20:10
读取的是二进制数据
作者: smile2015    时间: 2015-4-1 21:44
戴祺 发表于 2015-4-1 20:10
读取的是二进制数据

恩,老师视频里讲的不是很明白,二进制码,后面又讲到11110000110什么的,不懂
作者: 快乐ABC    时间: 2015-4-2 00:10
这个是模拟的java自己的read方法,java提供的方法返回的是int。因为读取MP3是字节流,这就有一个小问题,MP3本身的数据中可能有一个字节为11111111(十进制是-1),这是会造成(len=read())=-1,是读取数据的循环停止。所以在底层放回数据时可以与上255(255的二进制是00000000 00000000 00000000 11111111),此时可以将-1的高3个字节全部变为0,不会造成循环终止,而又不影响MP3的低字节的数据。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2