Chuyển số thập lục phân (hex) sang thập phân (decimal). Hex cơ số 16 (0-9, A-F), Decimal cơ số 10.
Cách làm: Duyệt từ phải sang trái, lấy giá trị chữ số (0-9 hoặc A-F=10-15), nhân với 16^vị_trí (bắt đầu từ 0), cộng dồn.
Ví dụ
Input: ACD A(10) * 16^2 = 2560 C(12) * 16^1 = 192 D(13) * 16^0 = 13 Total = 2765
Thuật toán
Bắt đầu
Bước 1: Hàm convert(char num[])
len = strlen(num), base = 1, temp = 0
Với i từ len-1 xuống 0:
Nếu '0' <= num[i] <= '9': temp += (num[i]-48)*base
Nếu 'A' <= num[i] <= 'F': temp += (num[i]-55)*base
base *= 16
Trả về temp
Bước 2: main()
num = "3F456A"
Gọi convert(num)
Kết thúc
Ví dụ code
#include <iostream>
#include <string.h>
using namespace std;
int convert(char num[]) {
int len = strlen(num);
int base = 1, 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 << " sau chuyen doi thanh thap phan: " << convert(num) << endl;
return 0;
}
Kết quả
3F456A sau chuyen doi thanh thap phan: 4146538