我有可用字符串的十六进制数字,我想通过删除前导零来缩短它。我需要用Java来做

例如 :

0000000000000000000000000A000000   -> 0x0A000000
0x0000000000000000000000000A000000 -> 0x0A000000

000000000000000000000000C0A80000   -> 0xC0A80000
0x000000000000000000000000C0A80000 -> 0xC0A80000


当前下面的代码引发NumberFormatException异常

System.out.println(Long.toHexString(Long.parseLong("0x0000000000000000000000000A000000")));

最佳答案

您没有正确使用Long.parseLong

它应该是:

System.out.println(Long.toHexString(Long.parseLong("0000000000000000000000000A000000",16)));


但这将导致

a000000


这不完全是您想要的。

您必须添加一些其他格式才能获得所需的确切输出:

String shortHex = Long.toHexString(Long.parseLong("0000000000000000000000000A000000",16)).toUpperCase ();
String formatted = (shortHex.length () % 2 == 0 ? "0x":"0x0") + shortHex;
System.out.println (formatted);


现在的输出将是:

0x0A000000


如果输入以“ 0x”开头,则必须在调用parseLong之前修剪该前缀。

08-07 19:51