你可以使用按位數學,下面的代碼應該是自我解釋的。如果你不明白,請在評論中提問。
public class LongConversion {
public static void main(String args[]) {
for (int i = -1; i > -40; i -= 9) {
// THIS IS THE IMPORTANT LINE, THE REST IS JUST FOR DEMONSTRATION
long l = 0x00000000FFFFFFFFl & (long) i;
System.out.println("Original i: " + i);
System.out.println(Integer.toHexString(i));
System.out.println("Longed i: " + l);
System.out.println(zeroLong(l));
System.out.println();
}
}
public static String zeroLong(long l) {
return String.format("%16s", Long.toHexString(l)).replace(' ', '0');
}
}
該代碼輸出:
Original i: -1
ffffffff
Longed i: 4294967295
00000000ffffffff
Original i: -10
fffffff6
Longed i: 4294967286
00000000fffffff6
Original i: -19
ffffffed
Longed i: 4294967277
00000000ffffffed
Original i: -28
ffffffe4
Longed i: 4294967268
00000000ffffffe4
Original i: -37
ffffffdb
Longed i: 4294967259
00000000ffffffdb
您可以使用略短的'&0xFFFFFFFFL'。 –
的確如此,但我只是爲了簡潔起見 – durron597