Java 将int转换为十六进制字符串

Java 将int转换为十六进制字符串,java,Java,我的整数是1238,当我使用Integer.tohextString函数转换为十六进制字符串时,它将返回4d6。是否有任何可能的方式,我可以格式化,以便它将返回我04d6?这将是伟大的,如果你能提供解决方案的一般情况下,而不是这个具体的情况。 多谢各位 这将是伟大的,如果你能提供解决方案的一般情况下,而不是 本案 这是一个快速解决方案,在十六进制字符串长度不是2的倍数的情况下,将添加一个左0 StringBuilder sb = new StringBuilder(); sb.append(In

我的整数是1238,当我使用Integer.tohextString函数转换为十六进制字符串时,它将返回4d6。是否有任何可能的方式,我可以格式化,以便它将返回我04d6?这将是伟大的,如果你能提供解决方案的一般情况下,而不是这个具体的情况。 多谢各位

这将是伟大的,如果你能提供解决方案的一般情况下,而不是 本案

这是一个快速解决方案,在十六进制字符串长度不是2的倍数的情况下,将添加一个左0

StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(myInt));
if (sb.length() % 2 > 0) {
    sb.insert(0, '0'); // pad with leading zero if needed
}
String hex = sb.toString();

触发“0”+整数.toHexString()有什么问题?准确地说:我建议使用“0x”作为前缀——“0”通常是八进制数的前缀;不是十六进制。这是一个很好的问题,可以作为学习经验。自己解决吧。(大约有20种不同的处理方法,所以应该不太难找到。)这篇文章展示了如何处理2位数字:很容易扩展到4位数字不适用于像123899这样的较大输入问题只是关于整数我的意思是,你的解决方案很聪明,但只适用于像1238这样的小整数,不是,123899它只是解决了问题中描述的问题。您的解决方案解决了问题中从未提及的问题。你不知道最初的问题是否真的是“字符串长度不是2的倍数”,因为问题没有提到它。说句公道话,他首先给出了一个具体的例子,然后说“如果你能为一般情况而不是这个具体情况提供解决方案,那就太好了”。我试图满足他的后一个要求。
System.out.println(String.format("%04x",1238));  ->  "04d6"
System.out.println(String.format("%#04x",1238)); -> "0x4d6"