我有可用字符串的十六进制数字,我想通过删除前导零来缩短它。我需要用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
之前修剪该前缀。