在寻找答案时,我使用了以下链接中提供的解决方案:How to format a Java string with leading zero?
我有以下代码需要翻译成java:
TRIM(TO_CHAR(123,'000X'))
据我所知,它将数字转换为六进制并添加了一些前导零。
但是,如果我给出了很大的价值,我将得到#####
作为答案,例如对于以下代码:
TRIM(TO_CHAR(999999,'000X'))
在Java中,当前的解决方案如下:
String numberAsHex = Integer.toHexString(123);
System.out.println(("0000" + numberAsHex).substring(numberAsHex.length()));
它对于较小的数字有效,但对于较大的数字,例如999999
,它输出423f
。如此进行转换,得到值f423f
,然后切掉一部分。所以我离甲骨文的价值还差得远
关于如何执行此操作的任何建议?或者为什么在Oracle案例中显示#####
?
答案 0 :(得分:1)
我建议使用String.format
而不是Integer.toHexString
,因为它具有更大的灵活性。
int number = ...;
String numberAsHex = String.format("%06x", number);
06
表示您得到前导零的6位数字,x
表示您得到小写的十六进制。
示例:
number = 123
,您将获得numberAsHex = "00007b"
number = 999999
可获得numberAsHex = "0f423f"