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

use*_*143 53 java hex integer

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

例如:

将20转换为32(即0x20)

将54转换为84(即0x54)

小智 250

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

  • 但这没有意义,你无法控制整数的内部表示.如果你想要十六进制的东西,你可以根据定义询问_human readable_表示. (37认同)
  • 问题是从整数转换为整数,而不是整数转换为字符串.请再次阅读该问题. (4认同)
  • @sircodesalot:问题是关于计算一个具有某个属性的整数_if_打印为十六进制,这是一个纯粹的数学转换.我强烈反对Jossef不应该根据谷歌的结果将答案标记为正确,但根据投票结果,我似乎属于少数. (4认同)

Joã*_*lva 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
}
Run Code Online (Sandbox Code Playgroud)

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

  • 从4个字节转换为字符串,然后从字符串转换为int然后转换为hex?不用了,谢谢. (3认同)
  • 这种解决方案存在缺陷.尝试运行以下内容:Integer.valueOf(String.valueOf(-2115381772),16) - 这将返回NumberFormatException. (3认同)

Wit*_*Wit 11

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

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

你可以改变资本X,以x小写.


das*_*ght 7

int orig = 20;
int res = Integer.parseInt(""+orig, 16);
Run Code Online (Sandbox Code Playgroud)


ppa*_*sek 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));
}
Run Code Online (Sandbox Code Playgroud)

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