11分22秒while((b=in.read())!=-1){System.out.print(integer.toHexString(b)+" ")}为什么b不进行&0xff? b为int型
如题所示。
如题所示。
2017-03-23
- -终于看懂了。点开源码看了下,read()单独往int里读的那个,就是我们第一次写的方法里,输出的数已经是&0xff 在源码中进行了这个操作,所以直接就可以转换成16进制输出。还有前面补0的那个操作,当小于或等于15时前面添加字符0,可以直接进行。但是我再read(数组,起始位,长度)这个方法时,出现问题,所以自己补了&0xff的操作,结果就一致了。。。更改了两个地方。buf[i]&0xff)<=0xf 还有 Integer.toHexString(buf[i]&0xff)+" "
下面是源码
public int read() throws IOException { if (eof) { return -1; } temp = new byte[1]; int n = read(temp, 0, 1); if (n <= 0) { return -1; } return temp[0] & 0xff; }
举报