あなたはビット単位の数学を使うことができます、以下のコードから自明であるはずです。わからない場合はコメントで聞いてください。
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