Skip to Content
CoursesCSC102แปลงเลขฐาน 10 เป็นเลขฐาน 16

แปลงเลขฐาน 10 เป็นเลขฐาน 16

โจทย์

รับค่าเลขฐาน 10 แล้วแปลงออกมาเป็นเลขฐาน 16 โดยไม่ใช้เมธอด Integer.toHexString()

InputOutput
14793
22
2748ABC
21474836477FFFFFFF

โค้ด

import java.util.Scanner; public class Main { public static void main (String[] args) { Scanner scanner = new Scanner(System.in); int base10Number = scanner.nextInt(); String base16Number = ""; while (base10Number > 0) { int divisionAnswer = base10Number / 16; int remainder = base10Number % 16; base10Number = divisionAnswer; base16Number = switch (remainder) { default -> String.valueOf(remainder); case 10 -> 'A'; case 11 -> 'B'; case 12 -> 'C'; case 13 -> 'D'; case 14 -> 'E'; case 15 -> 'F'; } + base16Number; } System.out.println(base16Number.isEmpty() ? "0" : base16Number); } }

คำอธิบาย

ขั้นตอนที่ 1: การนำเข้าไลบรารี

import java.util.Scanner;
  • บรรทัดนี้เป็นการนำเข้าไลบรารีที่ชื่อว่า Scanner
  • Scanner เป็นเครื่องมือที่ช่วยให้เราสามารถรับข้อมูลจากผู้ใช้ได้
  • เปรียบเสมือนการหยิบเครื่องรับสัญญาณที่สามารถรับตัวเลขจากเราได้มาเตรียมไว้

ขั้นตอนที่ 2: การสร้างคลาส

public class Main { // โค้ดอื่นๆ จะอยู่ในนี้ }
  • class Main คือการสร้างกล่องใหญ่ที่จะเก็บโค้ดทั้งหมดของเรา
  • คิดเหมือนกับการสร้างห้องทำงานที่ชื่อว่า “Main” ที่เราจะใช้แปลงตัวเลข

ขั้นตอนที่ 3: การสร้างเมธอดหลัก

public static void main (String[] args) { // โค้ดหลักจะอยู่ในนี้ }
  • นี่คือจุดเริ่มต้นของโปรแกรมของเรา
  • เปรียบเสมือนประตูทางเข้าของห้องทำงาน เมื่อเราเปิดโปรแกรม มันจะเริ่มทำงานจากตรงนี้

ขั้นตอนที่ 4: การสร้างตัวรับข้อมูล

Scanner scanner = new Scanner(System.in);
  • เราสร้างเครื่องมือที่ชื่อว่า scanner เพื่อรับข้อมูลจากผู้ใช้
  • คิดเหมือนกับการเตรียมปากกาและกระดาษไว้พร้อมจดบันทึกตัวเลขที่ผู้ใช้จะบอกเรา

ขั้นตอนที่ 5: การรับข้อมูลจากผู้ใช้

int base10Number = scanner.nextInt();
  • เราใช้ scanner เพื่ออ่านตัวเลขฐานสิบที่ผู้ใช้พิมพ์เข้ามา และเก็บไว้ในตัวแปร base10Number
  • เปรียบเสมือนการถามผู้ใช้ว่า “กรุณาใส่ตัวเลขฐานสิบ” แล้วจดตัวเลขนั้นลงในสมุด

ขั้นตอนที่ 6: การเตรียมตัวแปรสำหรับเก็บผลลัพธ์

String base16Number = "";
  • เราสร้างกล่องว่างๆ ที่ชื่อว่า base16Number เพื่อเก็บผลลัพธ์เลขฐานสิบหก
  • คิดเหมือนกับการเตรียมกระดาษเปล่าไว้เขียนคำตอบ

ขั้นตอนที่ 7: การแปลงเลขฐานสิบเป็นฐานสิบหก

while (base10Number > 0) { int divisionAnswer = base10Number / 16; int remainder = base10Number % 16; base10Number = divisionAnswer; base16Number = switch (remainder) { default -> String.valueOf(remainder); case 10 -> "A"; case 11 -> "B"; case 12 -> "C"; case 13 -> "D"; case 14 -> "E"; case 15 -> "F"; } + base16Number; }
  • นี่คือขั้นตอนการแปลงเลขฐานสิบเป็นฐานสิบหก โดยใช้วิธีการหารด้วย 16 ไปเรื่อยๆ
  • while (base10Number > 0) หมายถึง ทำซ้ำไปเรื่อยๆ ตราบใดที่ base10Number ยังมากกว่า 0
  • divisionAnswer = base10Number / 16 คือการหาร base10Number ด้วย 16 แล้วเก็บผลลัพธ์ไว้
  • remainder = base10Number % 16 คือการหาเศษจากการหารด้วย 16
  • base10Number = divisionAnswer คือการอัพเดทค่า base10Number เป็นผลลัพธ์จากการหาร
  • ส่วน switch ใช้เพื่อแปลงเศษที่ได้เป็นตัวเลขหรือตัวอักษรในระบบเลขฐานสิบหก (0-9 และ A-F)
  • ผลลัพธ์จะถูกต่อไว้ข้างหน้า base16Number เดิม

เปรียบเสมือนการแบ่งขนมให้เพื่อน 16 คนไปเรื่อยๆ แล้วจดว่าแต่ละครั้งมีขนมเหลือกี่ชิ้น โดยถ้าเหลือ 10-15 ชิ้น เราจะใช้ตัวอักษร A-F แทน

ขั้นตอนที่ 8: การแสดงผลลัพธ์

System.out.println(base16Number.isEmpty() ? "0" : base16Number);
  • นี่คือการแสดงผลลัพธ์เลขฐานสิบหกที่เราได้
  • ถ้า base16Number ว่างเปล่า (กรณีที่ตัวเลขเริ่มต้นเป็น 0) เราจะแสดง “0”
  • ถ้าไม่ว่างเปล่า เราจะแสดงค่าที่แปลงได้
  • เปรียบเสมือนการอ่านคำตอบที่เราจดไว้บนกระดาษให้ทุกคนฟัง
ปรับปรุงล่าสุด