将十六进制转换从Oracle SQL转换为Java代码

时间:2018-10-02 10:32:48

标签: java hex

在寻找答案时,我使用了以下链接中提供的解决方案: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案例中显示#####

1 个答案:

答案 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"