ตัวอย่างโค้ด
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 ทำหน้าที่แปลงเลขจากฐานหนึ่งไปอีกฐานหนึ่งในบรรทัดเดียว:
Integer.parseInt(num, source)- แปลงสตริงจากฐานsourceเป็นค่าint(ฐานสิบ)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