Java将整数转换为hex整数

我试图从一个整数转换成另一个整数,如果以hex打印,将看起来与原来的整数相同。

例如:

转换20到32(这是0x20)

转换54到84(这是0x54)

public static int convert(int n) { return Integer.valueOf(String.valueOf(n), 16); } public static void main(String[] args) { System.out.println(convert(20)); // 32 System.out.println(convert(54)); // 84 } 

也就是说,将原始数字视为hex,然后转换为十进制。

最简单的方法是使用Integer.toHexString(int)

 int orig = 20; int res = Integer.parseInt(""+orig, 16); 

你可以尝试这样的事情(你可以在纸上做):

 public static int solve(int x){ int y=0; int i=0; while (x>0){ y+=(x%10)*Math.pow(16,i); x/=10; i++; } return y; } public static void main(String args[]){ System.out.println(solve(20)); System.out.println(solve(54)); } 

对于你给出的例子,计算:0 * 16 ^ 0 + 2 * 16 ^ 1 = 32和4 * 16 ^ 0 + 5 * 16 ^ 1 = 84

 String input = "20"; int output = Integer.parseInt(input, 16); // 32 

将int转换为hex的另一种方法。

String s = String.format("%X", num);

您可以将大写X更改为小写的x

如果您只想打印整数的六进制表示,以下是优化的。

它应该是快速的,因为它只使用位操作,ASCII字符的utf-8值和recursion来避免在最后反转StringBuilder

 public static void hexa(int num) { int m = 0; if( (m = num >>> 4) != 0 ) { hexa( m ); } System.out.print((char)((m=num & 0x0F)+(m<10 ? 48 : 55))); } 

只需做到这一点:

 public static int specialNum(num){ return Integer.parseInt( Integer.toString(num) ,16) } 

它应该将任何特殊的十进制整数转换为它的hex对应。