黑马程序员技术交流社区
标题:
复制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