package test;
public class IntByteConvert {
/**
* @param args
*/
public static void main(String[] args) {
log(Integer.toHexString(150));
byte b = (byte) 150;
log(b);
// 留下int最后一个字节的数据给byte,是多少就是多少。如果最后一个字节最高位是1,那就是负数,不管原来int是多少。
int i = (int) b;
log(i);
log(Integer.toHexString(i));
/**
* 把byte转成int,就是把最高位复制到int剩下的三个字节,所以原来是负几就还是负几,原来是正数就还是正数。
* 所以,如果想还原原来int变byte的值
* ,就需要和ff(八个字节,一个byte)做算数&,这样高三个字节的1也好,0也好,都会被变成0,数字就肯定变成正数了。
*
* int->byte->int的转化就是这样,最后一步& 0xff。这个过程仅仅对大于0,小于256的int整数有效。
*/
int i2 = ((int) b) & 0xff;
log(i2);
}
private static void log(byte b) {
System.out.println(b);
}
private static void log(int i) {
System.out.println(i);
}
private static void log(Object obj) {
System.out.println(obj);
}
}