Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

แปลงฐานเลขใน Java: โค้ดเดียวแปลงได้หลายฐาน

ตัวอย่างโค้ด

public class Demo { 
    public static String baseConvert(String num, int source, int destination) { 
        return Integer.toString(Integer.parseInt(num, source), destination); 
    } 
    
    public static void main(String[] args) { 
        String myNum = "345"; 
        int source = 8; // ฐานแปด (Octal)
        
        System.out.println("แปลงจากฐานแปดเป็นฐานสอง: " + baseConvert(myNum, source, 2)); 
        System.out.println("แปลงจากฐานแปดเป็นฐานสิบ: " + baseConvert(myNum, source, 10)); 
        System.out.println("แปลงจากฐานแปดเป็นฐานสิบหก: " + baseConvert(myNum, source, 16)); 
    } 
}

ผลลัพธ์

แปลงจากฐานแปดเป็นฐานสอง: 11100101 
แปลงจากฐานแปดเป็นฐานสิบ: 229 
แปลงจากฐานแปดเป็นฐานสิบหก: e5

คำอธิบาย

เมธอด baseConvert ทำหน้าที่แปลงเลขจากฐานหนึ่งไปอีกฐานหนึ่งในบรรทัดเดียว:

  1. Integer.parseInt(num, source) - แปลงสตริงจากฐาน source เป็นค่า int (ฐานสิบ)
  2. Integer.toString(value, destination) - แปลงค่า int เป็นสตริงในฐาน destination

ฐานที่รองรับ

Java รองรับการแปลงระหว่างฐาน 2 ถึง 36 (Character.MIN_RADIX ถึง Character.MAX_RADIX)

ตัวอย่างเพิ่มเติม

// ฐานสิบหกไปฐานสอง
baseConvert("FF", 16, 2); // "11111111"

// ฐานสองไปฐานสิบ
baseConvert("1010", 2, 10); // "10"

// ตัวอักษรใหญ่/เล็กในฐาน > 10
baseConvert("255", 10, 16); // "ff" (ตัวเล็ก)
baseConvert("255", 10, 16).toUpperCase(); // "FF"

ข้อจำกัด

  • ทำงานกับค่าที่อยู่ในขอบเขต int เท่านั้น (-2³¹ ถึง 2³¹-1)
  • สำหรับตัวเลขใหญ่กว่านี้ ควรใช้ BigInteger
  • อินพุตต้องเป็นตัวเลขที่ถูกต้องในฐานต้นทาง มิฉะะจะโยน NumberFormatException