1 private byte[] change(byte[] buff){
2 for (int i=0;i<buff.length;i++){
3 int b=0;
4 for (int j=0;j<8;j++){
5 int bit = (buff[i]>>j&1)==0?1:0;
6 b += (1<<j)*bit;
7 }
8 buff[i]=[byte]b;
9 }
10 return buff;
11 }这个方法主要功能是把buff数组中的每个字节的每一位取反.我不是太明白,尤其是
for (int j=0;j<8;j++){
int bit = (buff[i]>>j&1)==0?1:0;
b += (1<<j)*bit;
}
大家帮着解释解释,如果觉的分少我可以再加.谢了
解决方案 »
- (进个人看看,不然没法儿结贴呀)求一个用udp传输大文件的思路!顺带问下udp打洞是什么概念?
- 请问个位JNDI到底是什么意思呀,始终没有理解清楚
- 谁有在线中文版Java API帮助文档java类软件包手册?
- 大清早发个中文乱码问题,大家帮帮忙
- 各位大侠救急,在编译jsp页时遇到了奇怪的Exception
- 为什么我的程序突然运行不了
- 如何打包成可在命令行利用java执行的jar文件?(关于manifest.mf)
- 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
- Java2 ME怎么收费?
- 多线程问题,Object.wait() 和 Object.notify() 如何理解?
- 一个求质数的问题 怎么老是显示不对?
- 帮看一下这个小程序怎么调用函数的
然后首先b = 0; 进入第二个for循环 j=0 bit的值取决于右边的那个表达式,也就是(buff[i]>>j&1)==0?1:0 括号先运算 1首先向右右移0位 然后于1进行与运算 当然结果还是0 所以红色的表达式变成了 0==0?1:0 这是if判断的三元运算符 所以这一位就变成1 也就是bit=1,
另外这个有错误吧?buff[i]=[byte]b 应该是buff[i]= (byte)b