java-将字节转换为整数-为什么每个字节都带有0xff?
以下两者之间的区别是什么:java-将字节转换为整数-为什么每个字节都带有0xff?,java,math,byte,bit,Java,Math,Byte,Bit,以下两者之间的区别是什么: int n = (b1 & 0xff) << 24 | (b2 & 0xff) << 16 | (b3 & 0xff) << 8 | b4 & 0xff int n=(b1&0xff)让我假设b1、b2、b3和b4的类型是byte 在这种情况下,它们的值将被符号扩展,如果它们是负数,如果不使用,结果将是错误的 演示: 让我假设b1、b2、b3和b4的类型是字节 在这种情况下,它们的值将被符号扩展,如
int n = (b1 & 0xff) << 24 | (b2 & 0xff) << 16 | (b3 & 0xff) << 8 | b4 & 0xff
int n=(b1&0xff)让我假设b1
、b2
、b3
和b4
的类型是byte
在这种情况下,它们的值将被符号扩展,如果它们是负数,如果不使用,结果将是错误的
演示:
让我假设b1
、b2
、b3
和b4
的类型是字节
在这种情况下,它们的值将被符号扩展,如果它们是负数,如果不使用,结果将是错误的
演示:
首先你需要了解b1首先你需要了解b1以使程序更安全?你能解释为什么吗?如何使程序更安全?这些类型肯定是byte
类型吗?为了使程序更安全?你能解释为什么吗?如何使用和使其更安全?这些类型肯定是byte
类型吗?
int n = b1 << 24 | b2 << 16 | b3 << 8 | b4
class Test {
public static void main(String[] args) {
byte a = (byte)128;
int x1 = a << 8;
int x2 = (a & 0xff) << 8;
System.out.println(x1);
System.out.println(x2);
}
}
-32768
32768
11111111111111111111111111101110 &
00000000000000000000000011111111
00000000000000000000000011101110