int index = bytes[i] & 0xff; //字符转换成数字
byte 转int 是由8位 转到32位的,这样就有了两种扩展方式,0扩展 和1扩展,这要取决去最高位(符号位)是0 还是1 这样的话 如果是 1扩展,那前面的24位就全是1了,这样转换过去的 int 跟原 byte是不一样的,所以 必须 要&0xff 也就是保存 最低的8位 例如:byte x=(byte)0xa0; 然后x转为int后 会变成0xffffffa0,必须要&0xff
int index = bytes[i] & 0xff; //字符转换成数字
byte 转int 是由8位 转到32位的,这样就有了两种扩展方式,0扩展 和1扩展,这要取决去最高位(符号位)是0 还是1 这样的话 如果是 1扩展,那前面的24位就全是1了,这样转换过去的 int 跟原 byte是不一样的,所以 必须 要&0xff 也就是保存 最低的8位 例如:byte x=(byte)0xa0; 然后x转为int后 会变成0xffffffa0,必须要&0xff
转载于:https://www.cnblogs.com/yuan-gou/archive/2011/10/17/2215136.html