Java Convert integer to hex integer

前端 未结 8 1661
醉话见心
醉话见心 2020-12-01 09:58

I\'m trying to convert a number from an integer into an another integer which, if printed in hex, would look the same as the original integer.

For example:

C

相关标签:
8条回答
  • 2020-12-01 10:33
    int orig = 20;
    int res = Integer.parseInt(""+orig, 16);
    
    0 讨论(0)
  • 2020-12-01 10:41

    Simply do this:

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

    It should convert any special decimal integer to its hexadecimal counterpart.

    0 讨论(0)
  • 2020-12-01 10:45

    Another way to convert int to hex.

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

    You can change capital X to x for lowercase.

    Example:

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

    String.format("%X", 32) results 20.

    0 讨论(0)
  • 2020-12-01 10:45

    You could try something like this (the way you would do it on paper):

    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));
    }
    

    For the examples you have given this would calculate: 0*16^0+2*16^1=32 and 4*16^0+5*16^1=84

    0 讨论(0)
  • 2020-12-01 10:50
    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
    }
    

    That is, treat the original number as if it was in hexadecimal, and then convert to decimal.

    0 讨论(0)
  • 2020-12-01 10:53

    The following is optimized iff you only want to print the hexa representation of a positive integer.

    It should be blazing fast as it uses only bit manipulation, the utf-8 values of ASCII chars and recursion to avoid reversing a StringBuilder at the end.

    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)));
    }
    
    0 讨论(0)
提交回复
热议问题