โปรแกรมแปลงเลขฐาน
16
เป็นเลขฐาน 10
1. วิธีการแปลงฐาน 16 เป็นฐาน 10 โดยปกติ
การแปลงเลขฐาน16 ให้เป็นเลขฐาน 10 ทำได้โดยวิธีการคูณตัวเลขฐาน
16 ในแต่ละหลักด้วยค่าประจำตำแหน่ง
แล้วนำผลลัพธ์ที่ได้มารวมกัน จะได้เป็นค่าของเลขฐานสิบ
2. CODE program ( เขียนแบบ OOP สร้าง Class)
#include "stdio.h"
#include "string.h"
class Number_Base
{
int number;
int ch;
char sh[100];
int i,j;
public:
Number_Base(){
number=0;
i=0,j=0;
}
void convert_Number(){
printf("\t\t\t\tinput
Number in Hex: ");
scanf("%s",&sh);
i
=strlen(sh);
while(i!=0){
ch
= sh[j];
printf("\n\n\t\t\t\t-----Char
no.%d-----\n",j+1);
if(('0'
<= ch && ch <= '9')){
printf("\t\t\t\tCh:%d\t\t%d\n",ch,ch-'0');
number
= number * 16;
printf("\t\t\t\tNumber
:%d\n",number);
number
= number + (ch - '0');
}
if(('A'
<= ch && ch && ch <= 'F')){
printf("\t\t\t\tCh:%d\t\t%d\n",ch,ch-'7');
number
= number * 16;
printf("\t\t\t\tNumber
:%d\n",number);
number
= number + (ch - '7');
}
printf("\t\t\t\tNumber :%d\n",number);
printf("\t\t\t\t-------------------");
i--;
j++;
}
printf("\n\n\t\t\t
-----------Output--------------");
printf("\n\t\t\t
The O/p No in Decimal is : %d\n",number);
printf("\t\t\t
-------------------------------");
}
};
void main()
{
Number_Base b1;
b1.convert_Number();
}
3. อธิบาย Code
program
#include "stdio.h" เรียกใช้ไลบรารี
stdio.h
#include "string.h" เรียกใช้ไลบรารี
string.h
class Number_Base สร้างคลาสชื่อ
Number_Base
{
int number; ประกาศตัวแปรชื่อ
number ชนิด integer
int ch; ประกาศตัวแปรชื่อ
ch ชนิด integer
char sh[100]; ประกาศตัวแปรชื่อshแบบสตริงชนิด
character
int i,j; ประกาศตัวแปรชื่อ
iและ j ชนิด integer
public: ประกาศให้
code ที่อยู่ใต้คำสั่งนี้ เป็นแบบ
สาธารณะ
Number_Base() สร้างฟังก์ชั่น
ชื่อว่า Number_Base
เป็น
constructor
{
number=0; ให้ตัวแปร
number มีค่าเท่ากับ 0
i=0,j=0; ให้ตัวแปร
i,jมีค่าเท่ากับ 0
}
void convert_Number() สร้างฟังก์ชั่น
ชื่อว่า convert_Number
{
printf("\t\t\t\tinput Number in Hex:
"); แสดงข้อความ input Number in Hex:
ออกหน้าจอ
scanf("%s",&sh); รับค่าเป็นตัวอักษรมาเก็บไว้ในตัวแปร
sh
i =strlen(sh); ให้
I มีค่าเท่ากับ ความยาวตัวอักษรในตัว
แปร sh ที่รับเข้า
while(i!=0) วนลูป
ในขณะที่ I ไม่เท่ากับ
0
{
ch = sh[j]; ให้
ตัวแปร ch เท่ากับ ตัวแปร sh ในตัว
อาเรย์ลำดับที่ i
printf("\n\n\t\t\t\t-----Char
no.%d-----\n",j+1); แสดง ข้อความออกหน้าจอ
if('0' <= ch && ch <= '9') สร้างเงื่อนไขถ้า'0'น้อยกว่าหรือกับค่าในตัว
แปร ch และ '9' มากกว่าหรือเท่ากับ
ค่าใน
ตัวแปร
ch
{
printf("\t\t\t\tCh:%d\t\t%d\n",ch,ch-'0'); แสดงค่า ch
และ ch-'0' ออกทางหน้าจอ
number = number * 16; ให้ตัวแปรnumber เท่ากับ numberคูณ 16
printf("\t\t\t\tNumber :%d\n",number); แสดงค่า ตัวแปร
number ออกทางหน้าจอ
number = number + (ch - '0'); ให้ตัวแปร number
เท่ากับ number
บวก
กับตัวแปร ch ลบ ด้วยตัวอักษร 0
}
if('A' <= ch && ch && ch <=
'F') สร้างเงื่อนไขถ้า'A'น้อยกว่าหรือกับค่าในตัว
แปร ch และ 'F' มากกว่าหรือเท่ากับ
ค่าใน
ตัวแปร
ch
{
printf("\t\t\t\tCh:%d\t\t%d\n",ch,ch-'7'); แสดงค่าในตัวแปร ch และ ch-'7'
number = number * 16; ให้ตัวแปร number เท่ากับnumber คูณ 16
printf("\t\t\t\tNumber :%d\n",number); แสดงค่า ตัวแปร
number ออกทางหน้าจอ
number = number + (ch - '7'); ให้ตัวแปร number
เท่ากับ number
บวก
กับตัวแปร ch ลบ ด้วยตัวอักษร 7
}
printf("\t\t\t\tNumber
:%d\n",number); แสดงค่า
ตัวแปร number ออกทางหน้าจอ
printf("\t\t\t\t-------------------");
i--; ลดค่าตัวแปร
I ลง 1
j++; บวกค่าตัวแปร
j ขึ้น 1
}
printf("\n\n\t\t\t
----------Output------------"); แสดงข้อความ Output ออกทางหน้าจอ
printf("\n\t\t\t The O/p No in Decimal is :
%d\n",number); แสดงข้อความ และค่าในตัวแปร
number printf("\t\t\t
-------------------------------"); ออกหน้าจอออกทางหน้าจอ
}
};
void main() ฟังก์ชั่นหลัก
{
Number_Base b1; ประกาศ
object ชื่อว่า b1
b1.convert_Number(); เรียกฟังก์ชั่น
convert_Number()
ใน คลาส Number_Base มาใช้งาน
} จบการทำงาน
4. ผลการทำงาน
http://nanajipathastyle.lnwshop.com