簡體   English   中英

Java將整數轉換為十六進制整數

[英]Java Convert integer to hex integer

我正在嘗試將一個數字從整數轉換為另一個整數,如果以十六進制打印,則看起來與原始整數相同。

例如:

將20轉換為32(即0x20)

將54轉換為84(即0x54)

最簡單的方法是使用Integer.toHexString(int)

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
}

也就是說,將原始數字視為十六進制,然后轉換為十進制。

int轉換為十六進制的另一種方法。

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

您可以將大寫X更改為x以獲得小寫。

例:

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

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

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

如果您只想打印整數的六進制表示,則以下內容已優化。

它應該非常快速,因為它只使用位操作,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)));
}

只需這樣做:

public static int specialNum(num){

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

它應該將任何特殊的十進制整數轉換為十六進制的十進制整數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM