今天再一段代码里见到下面这种情况:
String str = "0101...1011";//str是一个二进制形式字符串
byte b = (byte)(Integer.parseInt(str, 2) & 0xff);
//byte b = (byte)Integer.parseInt(str, 2);
换成注释的这句有什么不同吗
String str = "0101...1011";//str是一个二进制形式字符串
byte b = (byte)(Integer.parseInt(str, 2) & 0xff);
//byte b = (byte)Integer.parseInt(str, 2);
换成注释的这句有什么不同吗
先取低8位,再转bytebyte b = (byte)Integer.parseInt(str, 2);
直接转byte结果是一样的,不过是有增加代码可读性的效果呢
0xff默认整形,所以int型与它相与会把int转换为整形
这样,int中高的24个位会被清零,就是我们想要的了