บทความล่าสุด

12 กันยายน 2555

โค้ดแปลงเลขฐาน 2 , 8 ,10 และ 16 ภาษาซีชาร์ป C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FindBaseNumber
{
    class Program
    {
        public static void Main(string[] args)
        {
           
//=======================================================================================
            int inputBNum, connum = 0, number = 0;
            string result = "", numberhex = "";

            Console.WriteLine("---| Program Calculator[Binary,Octal,Decimal and Hexadecimal]|---");
            //================================== รับค่าตัวเลข ==================================
            do
            {
                Console.WriteLine("\nPlease input number for find base number? [Use numbers 2,8,10 and 16]");
                Console.Write("\nInput first base number : ");
                inputBNum = int.Parse(Console.ReadLine());

                if (inputBNum == 2)
                {
                    Console.Write("Convent to...\nInput base number : ");
                    connum = int.Parse(Console.ReadLine());
                }
                else if (inputBNum == 8)
                {
                    Console.Write("Convent to...\nInput base number : ");
                    connum = int.Parse(Console.ReadLine());
                }
                else if (inputBNum == 10)
                {
                    Console.Write("Convent to...\nInput base number : ");
                    connum = int.Parse(Console.ReadLine());
                }
                else if (inputBNum == 16)
                {
                    Console.Write("Convent to...\nInput base number : ");
                    connum = int.Parse(Console.ReadLine());
                }
                else
                {
                    Console.WriteLine("Error! Please input the correct number,Try again.");
                }
            } while (connum != 2 && connum != 8 && connum != 10 && connum != 16);
            //================================== รับค่าข้อมูลที่ต้องการจะแปลงเป็นเลขฐานอื่นๆ ==================================
            if (inputBNum == 16)
            {
                Console.Write("Input number to calculation : ");
                numberhex = Console.ReadLine();
            }
            else
            {
                Console.Write("Input number to calculation : ");
                number = int.Parse(Console.ReadLine());
            }
               
            //================================== ค้นหาว่าตัวเลขอยู่ใน case อะไร สำหรับใช้ในการไปคำนวนในฟังก์ชั่น ==================================

            if (inputBNum == 2 && connum == 8)
                result = FindBintoOct(inputBNum, number);
            else if (inputBNum == 2 && connum == 10)
                result = FindBintoDec(inputBNum, number);
            else if (inputBNum == 2 && connum == 16)
                result = FindBintoHex(inputBNum, number);
            else if (inputBNum == 8 && connum == 2)
                result = FindOcttoBin(inputBNum, number);
            else if (inputBNum == 8 && connum == 10)
                result = FindOcttoDec(inputBNum,number);
            else if (inputBNum == 8 && connum == 16)
                result = FindOcttoHex(inputBNum, number);
            else if (inputBNum == 10 && connum == 2)
                result = FindDectoBin(number);
            else if (inputBNum == 10 && connum == 8)
                result = FindDectoOct(number);
            else if (inputBNum == 10 && connum == 16)
                result = FindDectoHex(number);
            else if (inputBNum == 16 && connum == 2)
                result = FindHextoBin(inputBNum, numberhex);
            else if (inputBNum == 16 && connum == 8)
                result = FindHextoOct(inputBNum, numberhex);
            else if (inputBNum == 16 && connum == 10)
                result = FindHextoDec(inputBNum, numberhex);

            //================================== แสดงผลการแปลงเลขฐาน ==================================
            if(numberhex != "")
                Console.WriteLine("\n\t---| Result |---\nBase Number : {0} Convert to {1} \nResult :\t{2} = {3}\n", inputBNum, connum, numberhex, result);
            else
                Console.WriteLine("\n\t---| Result |---\nBase Number : {0} Convert to {1} \nResult :\t{2} = {3}\n", inputBNum, connum, number, result);
            PoweredBydEMolizH();
        }
        //=======================================================================================
        //================================= ฟังก์ชั่นการคำนวณหาเลขฐาน =================================
        //=======================================================================================
        private static string FindBintoOct(int inputBNum , int number)
        {
            string bintodec = FindDec(inputBNum, number);
            int dectobin = int.Parse(bintodec);
            string result = FindDectoOct(dectobin);
            return result;
        }

        private static string FindBintoDec(int inputBNum, int number)
        {
            string result = FindDec(inputBNum, number);
            return result;
        }

        private static string FindBintoHex(int inputBNum, int number)
        {
            string bintodec = FindDec(inputBNum, number);
            int dectohex = int.Parse(bintodec);
            string result = FindDectoHex(dectohex);
            return result;
        }

        private static string FindOcttoBin(int inputBNum, int number)
        {
            string octtodec = FindDec(inputBNum, number);
            int dectobin = int.Parse(octtodec);
            string result = FindDectoBin(dectobin);
            return result;
        }

        private static string FindOcttoDec(int inputBNum,int number)
        {
            string result = FindDec(inputBNum, number);
            return result;
        }

        private static string FindOcttoHex(int inputBNum, int number)
        {
            string octtodec = FindDec(inputBNum, number);
            int dectohex = int.Parse(octtodec);
            string result = FindDectoHex(dectohex);
            return result;
        }

        private static string FindDectoBin(int number)
        {
            int Numden = number;
            string result = "";
            do
            {
                if (Numden >= 2)
                    result = (Numden % 2) + result;
                else
                    result = Numden + result;
                Numden /= 2;
            } while (Numden > 0);
            return result;
        }

        private static string FindDectoOct(int number)
        {
            int Numden = number;
            string result = "";
            do
            {
                if (Numden >= 8)
                    result = (Numden % 8) + result;
                else
                    result = Numden + result;
                Numden /= 8;
            } while (Numden > 0);
            return result;
        }

        private static string FindDectoHex(int number)
        {
            int Numden = number;
            string result = "";
            do
            {
                if (Numden >= 16)
                {
                    if (Numden % 16 == 10)
                        result = "A" + result;
                    else if (Numden % 16 == 11)
                        result = "B" + result;
                    else if (Numden % 16 == 12)
                        result = "C" + result;
                    else if (Numden % 16 == 13)
                        result = "D" + result;
                    else if (Numden % 16 == 14)
                        result = "E" + result;
                    else if (Numden % 16 == 15)
                        result = "F" + result;
                    else
                        result = (Numden % 16) + result;
                }
                else
                    result = Numden + result;
                Numden /= 16;
            } while (Numden > 0);
            return result;
        }

        private static string FindHextoBin(int inputBNum, string numberhex)
        {
            string hextodec = FindHextoDec(inputBNum, numberhex);
            int dectobin = int.Parse(hextodec);
            string result = FindDectoBin(dectobin);
            return result;
        }

        private static string FindHextoOct(int inputBNum, string numberhex)
        {
            string hextodec = FindHextoDec(inputBNum, numberhex);
            int dectoOct = int.Parse(hextodec);
            string result = FindDectoOct(dectoOct);
            return result;
        }

        private static string FindHextoDec(int inputBNum, string numberhex)
        {
            string defnum = numberhex;
            int val = 0, j = 0;
            for (int i = (defnum.Length - 1); i >= 0; i--, j++)
            {
                if (defnum.Substring(i, 1) == "A" || defnum.Substring(i, 1) == "a")
                    val += 10 * Convert.ToInt32(Math.Pow(inputBNum, j));
                else if (defnum.Substring(i, 1) == "B" || defnum.Substring(i, 1) == "b")
                    val += 11 * Convert.ToInt32(Math.Pow(inputBNum, j));
                else if (defnum.Substring(i, 1) == "C" || defnum.Substring(i, 1) == "c")
                    val += 12 * Convert.ToInt32(Math.Pow(inputBNum, j));
                else if (defnum.Substring(i, 1) == "E" || defnum.Substring(i, 1) == "d")
                    val += 13 * Convert.ToInt32(Math.Pow(inputBNum, j));
                else if (defnum.Substring(i, 1) == "E" || defnum.Substring(i, 1) == "e")
                    val += 14 * Convert.ToInt32(Math.Pow(inputBNum, j));
                else if (defnum.Substring(i, 1) == "F" || defnum.Substring(i, 1) == "F")
                    val += 15 * Convert.ToInt32(Math.Pow(inputBNum, j));
                else
                    val += Convert.ToInt32(defnum.Substring(i, 1)) * Convert.ToInt32(Math.Pow(inputBNum, j));
            }
            string result = Convert.ToString(val);
            return result;
        }

        private static string FindDec(int inputBNum, int number)
        {
            string defnum = Convert.ToString(number);
            int val = 0, j = 0;
            for (int i = (defnum.Length - 1); i >= 0; i--, j++)
            {
                val += Convert.ToInt32(defnum.Substring(i, 1)) * Convert.ToInt32(Math.Pow(inputBNum, j));
            }
            string result = Convert.ToString(val);
            return result;
        }
        public static void  PoweredBydEMolizH()
        {
            Console.WriteLine("\nPowered By dEMolizH\nWebsite : WWW.GamerThai.COM\n");
        }
        //=======================================================================================
    }
}

3 ความคิดเห็น:

  1. ไม่ระบุชื่อ24 กันยายน 2556 เวลา 06:32

    ขอดู form app หน่อยครับ ^^

    ตอบลบ
    คำตอบ
    1. ทำไว้แต่ console ครับ
      ถ้าทำ forms app ก็ปรับเปลี่ยนนิดหน่อยเองนะครับ โครงสร้างก็เหมือนกันเลย

      ลบ
  2. ขอบคุณครับ

    ตอบลบ

แสดงความเห็นเกี่ยวกับบทความตรงนี้นะ ^^