Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ แปลงเลขฐานสิบหก (Hexadecimal) เป็นฐานสิบ (Decimal)


บทนำ

แปลงเลขฐานสิบหก (Base 16) เป็นฐานสิบ (Base 10) โดยฐานสิบหกใช้ 0-9 และ A-F (A=10, B=11, C=12, D=13, E=14, F=15)

ขั้นตอนการแปลง

  1. อ่านตัวเลขจากขวาไปซ้าย (LSB ไป MSB)
  2. คูณแต่ละหลักด้วย 16^position (position เริ่มจาก 0)
  3. รวมผลคูณทั้งหมด

ตัวอย่าง

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