Java将整数转换为十六进制整数

时间:2012-02-17 01:08:03

标签: java integer hex

我正在尝试将一个数字从整数转换为另一个整数,如果以十六进制打印,则看起来与原始整数相同。

例如:

将20转换为32(即0x20)

将54转换为84(即0x54)

8 个答案:

答案 0 :(得分:249)

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

答案 1 :(得分:39)

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
}

即,将原始数字视为十六进制,然后转换为十进制。

答案 2 :(得分:11)

int转换为十六进制的另一种方法。

String hex = String.format("%X", int);

您可以将大写X更改为x以获得小写。

示例:

String.format("%X", 31)结果1F

String.format("%X", 32)结果20

答案 3 :(得分:7)

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

答案 4 :(得分:5)

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

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

答案 5 :(得分:4)

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

答案 6 :(得分:1)

如果您只想打印整数的六边形表示,则会优化以下内容。

它应该非常快速,因为它只使用位操作,ASCII字符的utf-8值和递归以避免在最后反转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)));
}

答案 7 :(得分:0)

只需这样做:

public static int specialNum(num){

    return Integer.parseInt( Integer.toString(num) ,16)
}

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