บทนำ
แปลงเลขฐานสิบหก (Base 16) เป็นฐานสิบ (Base 10) โดยฐานสิบหกใช้ 0-9 และ A-F (A=10, B=11, C=12, D=13, E=14, F=15)
ขั้นตอนการแปลง
- อ่านตัวเลขจากขวาไปซ้าย (LSB ไป MSB)
- คูณแต่ละหลักด้วย 16^position (position เริ่มจาก 0)
- รวมผลคูณทั้งหมด
ตัวอย่าง
ACD = A(10)×16² + C(12)×16¹ + D(13)×16⁰ = 2560 + 192 + 13 = 2765
ตัวอย่างโค้ด C++
#include <iostream>
#include <string.h>
using namespace std;
int convert(char num[]) {
int len = strlen(num);
int base = 1;
int temp = 0;
for (int i = len - 1; i >= 0; i--) {
if (num[i] >= '0' && num[i] <= '9') {
temp += (num[i] - 48) * base;
base *= 16;
} else if (num[i] >= 'A' && num[i] <= 'F') {
temp += (num[i] - 55) * base;
base *= 16;
}
}
return temp;
}
int main() {
char num[] = "3F456A";
cout << num << " after converting to decimal becomes: " << convert(num);
return 0;
}
ผลลัพธ์
3F456A after converting to decimal becomes: 4146538