首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 十進制轉十六進制:庫函式與手動實現完整指南

     編輯:程式設計疑難解答

方法一:標準庫函式(推薦生產環境)

import java.util.Scanner;
public class DecToHex {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long n = sc.nextLong();
        String hex = Long.toHexString(n).toUpperCase(); // 核心一行
        System.out.println(hex);
    }
}
  • Long.toHexString 處理 0~2³¹-1 範圍,回傳無前導 0 的小寫十六進制字串。
  • toUpperCase() 符合題目大寫要求。
  • 若輸入可能超過 Long.MAX_VALUE,改用 BigInteger:new BigInteger(String.valueOf(n)).toString(16).toUpperCase()。

方法二:手動實現(教學/考試常考)

核心邏輯:反覆取餘數 (mod 16) 並除以 16,餘數對應 0-9,A-F,最後逆序輸出。

public static String toHex(long n) {
    if (n == 0) return "0";
    char[] digits = "0123456789ABCDEF".toCharArray();
    StringBuilder sb = new StringBuilder();
    while (n > 0) {
        int rem = (int)(n % 16);
        sb.append(digits[rem]);
        n /= 16;
    }
    return sb.reverse().toString(); // 逆序
}

關鍵細節

  • 使用 StringBuilder 避免字串拼接效能問題。
  • reverse() 直接反轉內部字元陣列,O(N)。
  • 處理 n == 0 邊界情況。
  • 負數轉換:題目限定非負整數,若需支援負數,通常輸出補碼形式(Long.toHexString 行為)。

藍橋杯/競賽提示

  • 輸入範圍 0~2,147,483,647 完全在 int/long 範圍內,Long.toHexString 即可 AC。
  • 若題目禁止使用庫函式,背誦手動實現模板(取餘、除基、查表、逆序)。

掌握庫函式與手動演算法雙軌,應對生產與考試皆無虞。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved