public class JoyOfHex { public static void main(String[] args) { System.out.println( Long.toHexString(0x100000000L + 0xcafebabe)); }}
请帮忙看看,这个程序结果为什么不是1cafebabe?谢谢
请帮忙看看,这个程序结果为什么不是1cafebabe?谢谢
0x100000000L + 0xcafebabe 不是转换为 long 吗?我试了,如果改为0x100000000L + 0xcafebabeL,就是1cafebabe了。
0xcafebabe = 1100 1010 1111 1110 1011 1010 1011 1110,八字节,是int型,首位是1,是负数。
转换成long型时,高32位用原int数的最高位填充,以保持符号不变。若是0xcafebabeL,本身就是long型,高32位是0