int value = 1000000;
byte b = (byte)(value & 0x000000ff);
byte b8 = (byte) ( (value & 0x0000ff00) >> 8);
byte b16 = (byte) ( (value & 0x00ff0000) >> 16);
byte b24 = (byte) ( (value & 0xff000000) >> 24);
System.out.println(b);
System.out.println(b8);
System.out.println(b16);
System.out.println(b24);有哪个高手能帮我详细解释一下上面的程序呢???
byte b = (byte)(value & 0x000000ff);
byte b8 = (byte) ( (value & 0x0000ff00) >> 8);
byte b16 = (byte) ( (value & 0x00ff0000) >> 16);
byte b24 = (byte) ( (value & 0xff000000) >> 24);
System.out.println(b);
System.out.println(b8);
System.out.println(b16);
System.out.println(b24);有哪个高手能帮我详细解释一下上面的程序呢???
>>,右移运算。
帮你分析一下:
int value = 1000000;
byte b = (byte)(value & 0x000000ff);
先将VALUE转换成二进制
然后与16进制的000000FF作与运算;
<<是右移!
byte b = (byte)(value & 0x000000ff); //取value 的最后八位, 即 0100 0000 ,转换成整型值为64
byte b8 = (byte) ( (value & 0x0000ff00) >> 8);//取value的第16至9位, 即 0100 0010, 然后再右移八位, 得到0100 0010, 转换成整型值为66
byte b16 = (byte) ( (value & 0x00ff0000) >> 16);//);//取value的第32至17位, 即 0000 1111 , 然后再右移16位, 得到0000 1111 , 转换成整型值为15
byte b24 = (byte) ( (value & 0xff000000) >> 24);//试着推算一下
楼主需要打下基础了,有空看点汇编,你就会明白了
这里也可以用/和%来算,就是效率低很多
int i=value%256
value/=256
int i8=value%256
value/=256
int i16=value%256
...
再把int转成byte,直接在计算时也可以转
不过要注意i=0~255 b=-128~127,
b=(byte)((i>127)?(i-256):i)