>>> print "%x" % (-1234)
-4d2
在Java/C這將是:fffffb2e
如何擁有的printf%×類似蟒蛇
C:printf("%x", -1234)
的Java:System.out.println(String.format("%x", -1234));
>>> print "%x" % (-1234)
-4d2
在Java/C這將是:fffffb2e
如何擁有的printf%×類似蟒蛇
C:printf("%x", -1234)
的Java:System.out.println(String.format("%x", -1234));
可以使用Integer#toString(intVal, radix)
方法此。
System.out.println(Integer.toString(1234, 16)); // 16 is the radix, thus hexadecimal
System.out.println(Integer.toString(1234, 2)); // 16 is the radix, thus binary
或者你甚至可以用Integer#toHexString(intVal)
直接將其轉換爲十六進制字符串,如果這是唯一的要求。
Java的String.format
始終將整數參數爲無符號,當您使用%o
或%x
格式 - 除非該參數是一個BigInteger
因爲那無法確定大小。試試這個:
long whateverValue = -1234;
System.out.println(String.format("%x", BigInteger.valueOf(whateverValue)));
(我認爲這會工作,但我還沒有嘗試過)
這將做你所要求的:
int var = -1234;
System.out.println(String.format("%s%x", (var < 0 ? "-" : ""), Math.abs(var)));
此插件如果一個減號要打印的值是負值,然後格式化數字的絕對值。
試試這個,
System.out.println(Integer.toString(-1234, 16));
您需要從負面情況不同,處理非負的情況下,這樣一個條件是必需的。之後,請撥打printf()
。
在C:
void printx (int x) {
if (x >= 0) printf("%x", x);
else printf("-%x", -x);
}
Java的將是類似的:
public static void printx (int x)
{
if (x >= 0) System.out.printf("%x", x);
else System.out.printf("-%x", -x);
}
你嘗試什麼Java代碼? – ajb
@ajb我添加了C/java代碼 – w00d
Java結果是正確的。如果你想要非標準的十六進制格式,你需要自己做。 –