Create Hexadecimal to Binary Converter in C#

Posted by ေတဇာလင္း Saturday, 12 November 2016 0 comments

မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုးပဲ မဂၤလာပါဗ်ာ။ က်ေနာ္တို႔ရဲ႕ မၿပီးျပတ္ေသးတဲ့ Number System အေၾကာင္းေလးကို ေရွ႕ဆက္ၾကည့္ၾကရေအာင္ပါ။ ဒီေန႔ေတာ့ Hexadecimal Number တစ္ခုကို Binary Number အျဖစ္ ဘရ္လိုေျပာင္းလဲ ယူႏိုင္မလဲဆိုတာေလးကို ေလ့လာၾကည့္ၾကမွာ ျဖစ္ပါတရ္။ မိတ္ေဆြတို႔ ပိုၿပီးနားလည္သြားေအာင္ က်ေနာ္ Hexadecimal ကေန Binary ေျပာင္းတာကို ေအာက္မွာ ဥပမာေလးနဲ႔ အရင္ျပပါ့မရ္။
 eg. Hex = 1AD, Binary =? 
          so, Hex  = 1        A      D   
                       = 0001 1010 1101   
                       = 000110101101<2> 
Hex(1AD) = Binary(000110101101)

အနည္းငယ္ရွင္းရမရ္ဆိုရင္ေတာ... Hexadecimal ကေန Binary ေျပာင္းလဲယူမရ္ဆိုရင္ျဖင့္ ပထမဆံုး Hex Number ေတြကို တစ္လံုးခ်င္းဆီ အရင္ခြဲယူပါတရ္။ ရလာတဲ့ Hex Number တစ္လံုးခ်င္းစီကိုမွ Binary Conversion Table နဲ႔ တိုက္ဆိုင္စစ္ေဆးပါတရ္။ ေနာက္ဆံုး ရလာတဲ့ တန္ဖိုးအသီးသီးကို ျပန္ေပါင္းေပးျခင္းျဖင့္ က်ေနာ္တို႔ လိုအပ္ေနတဲ့ Binary Number တစ္ခုကို ဆြဲထုတ္ယူလိုက္တာပဲျဖစ္ပါတရ္ဗ်။ နားလည္မရ္လို႔ ေမွ်ာ္လင့္ပါတရ္ဗ်။
ကဲ... အခုဆိုရင္ က်ေနာ္တို႔ Logic အေတြးကိုလည္း နားလည္သြားၿပီဆိုေတာ့ Coding Flow ေလးကို ဆက္ေလ့လာၾကည့္ၾကမရ္။
  1. ပထမဦးဆံုး မိတ္ေဆြတို႔ရိုက္ထည့္လိုက္တဲ့ Hexadecimal Number ကို ToCharArray() Method အားအသံုးျပဳၿပီး HexArr ဆိုတဲ့ Char Array တစ္ခုအျဖင့္ ဖန္တီးယူလိုက္ပါတရ္။
  2. ဒုတိယအေနနဲ႔ while()loop ကိုအသံုးျပဳၿပီး count ကို 1 တိုးေပးၿပီး HexArr ဆံုးသည္အထိ loop ပတ္ပါတရ္။
  3. Loop အတြင္းမွာေတာ့ Switch( )statement ကိုအသံုးျပဳၿပီး HexArr[index] ကို key အျဖစ္သံုးကာ ၄င္းနဲ႔သက္ဆိုင္တဲ့ Binary တန္ဖိုးေတြကို ဆြဲထုတ္ပါတရ္။
  4. ေဒီနည္းအတိုင္းပဲ loop ဆံုးသည္အထိ သြားၿပီး loop တခါပတ္တိုင္းရရွိလာတဲ့ Binary တန္းဖိုးေတြကို ေပါင္းေပးျခင္းျဖင့္ က်ေနာ္တို႔ လိုခ်င္ေနတဲ့ Binary တန္ဖိုးကိုရရွိမွာ ျဖစ္ပါတရ္ဗ်ာ
ဒီ Conversion ေလးရဲ႕ GUI ကိုေတာ့ ေအာက္ပါအတိုင္း ခ်ထားပါတရ္ဗ်။ မိတ္ေဆြတို႔အေနနဲ႔ ႀကိဳက္ႏွစ္သတ္ရာ ပံုစံ Tool ေတြနဲ႔ ဖန္တီးယူႏိုင္ပါတရ္။
ပိုၿပီး နားလည္သြားေအာင္ Coding အျပည့္အစံုေလးကို ေအာက္မွာ ေလ့လာၾကည့္လိုက္ၾကပါအံုးဗ်ာ။
using System;
using System.Windows.Forms;

namespace Converter
{
    public partial class HexToBinary : Form
    {
        public HexToBinary()
        {
            InitializeComponent();
        }

        public string HexadecimalToBinary(string hex)
        {
            string Bi = "";
            string Binary = "";
            int i = 0;
            char[] HexArr = hex.ToCharArray();
            while (HexArr.Length > i)
            {
                switch (HexArr[i])
                {
                    case '0': Bi = "0000"; break;
                    case '1': Bi = "0001"; break;
                    case '2': Bi = "0010"; break;
                    case '3': Bi = "0011"; break;
                    case '4': Bi = "0100"; break;
                    case '5': Bi = "0101"; break;
                    case '6': Bi = "0110"; break;
                    case '7': Bi = "0111"; break;
                    case '8': Bi = "1000"; break;
                    case '9': Bi = "1001"; break;
                    case 'A': Bi = "1010"; break;
                    case 'B': Bi = "1011"; break;
                    case 'C': Bi = "1100"; break;
                    case 'D': Bi = "1101"; break;
                    case 'E': Bi = "1110"; break;
                    case 'F': Bi = "1111"; break;
                    default: Bi = ""; break;
                }
                Binary += Bi +" ";
                i++;
            }
            return Binary;
        }

        private void btnConvert_Click(object sender, EventArgs e)
        {
            txtBinary.Text = HexadecimalToBinary(txtHexadecimal.Text.ToUpper()).ToString();       
        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            txtHexadecimal.Clear();
            txtBinary.Clear();
            txtHexadecimal.Focus();
        }
    }
}
အေသးစိတ္နားလည္ႏိုင္ဖို႔အတြက္ က်ေနာ္ Trace လုိက္ျပပါ့မရ္။
Hex = 1AD, Binary=? 
char[] HexArr = { '1', 'A', 'D'};   
i = 0; 
Loop1 => while(HexArr.Length >0) =>    
               while(3 > 0) => true   
                    switch(HexArr[i]) => 
                    switch(HexArr[0]) => case '1': Bi = "0001"; break;  
                         so, Bi = 0001   
                         i++;   

i = 1; 
Loop2 => while(3 > 1) => true   
                     switch(HexArr[1]) => case 'A': Bi = "1010"; break;  
                          so, Bi = 1010   
                          i++;   

i = 2; 
Loop3 => while(3 > 2) => true   
             switch(HexArr[2]) => case 'D': Bi = "1101"; break;  
         so, Bi = 1101   
         i++;   

i = 3; 
Loop4 => while(3 > 3) => false 
so, Binary = Loop1 Loop2 Loop3 = 0001 1010 1101

ရွင္းလင္းခ်က္နဲ႔ Screen Shoot ေလးေတြကို ၾကည့္လိုက္ရင္ေတာ့ နားလည္သြားၾကလိမ့္မရ္လို႔ ထင္ပါတရ္ဗ်ာ။ မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမတို႔အေနနဲ႔ Hexadecimal Number တစ္ခုကေနၿပီး Decimal Number တစ္ခုသို႔ ဘယ္လို ေျပာင္းလဲယူႏိုင္မလဲဆိုတာကို နားလည္သြားၾကမရ္လို႔ ထင္ပါတရ္ဗ်ာ။ စတင္ေလ့လာသူမ်ားအတြက္သာ ရည္ရြယ္လို႔ တင္ျပပံု မွားယြင္းတာ၊ အဓိပၸါယ္ ကြဲလြဲေဖာ္ျပမိတာရွိခဲ့ရင္ နားလည္ေပးၾကဖို႔ ေတာင္းပန္ပါတရ္ဗ်။ မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုး ေလ့လာျခင္းျဖင့္ ေက်နပ္ႏိုင္ၾကပါေစ။

0 Responses so far.

Post a Comment