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对应。