因为java没有无符号数,所以在byte值大于127时,java表达的是负数。
例如:
byte b = (byte)152;// b的值在java中表达的是:-104,二进制值是:10011000。
int i = b;// i 的值 在java中表达的是:-104,二进制值是:11111111111111111111111110011000
如果想要 i 的值等于152,需要以下运算:
/**
* byte转int,对于b值大于127时必须用。
*
* @param b
* @return
*/
protected int byte2Int(byte b) {
return b & 0xFF;
}
i = byte2Int(b);// 现在 i 的值在java中表达的是:152,二进制值是:00000000000000000000000010011000