Vấn đề
Làm cách nào để chuyển đổi giá trị thập lục phân thành giá trị số nguyên bằng ngôn ngữ lập trình C?
Giải thích khái niệm.
Giải pháp
Các giá trị thập lục phân biểu thị bằng 16 ký hiệu từ 1 đến 9 &A đến F. Ở đây, giá trị thập phân từ A đến F tương đương là 10 đến 15.
Ví dụ
Sau đây là chương trình C để chuyển đổi hệ thập lục phân thành số nguyên bằng cách sử dụng các hàm -
#include<stdio.h> #include<string.h> #include<math.h> int hextodc(char *hex){ int y = 0; int dec = 0; int x, i; for(i = strlen(hex) - 1 ; i >= 0 ; --i)//{ if(hex[i]>='0'&&hex[i]<='9'){ x = hex[i] - '0'; } else{ x = hex[i] - 'A' + 10; } dec = dec + x * pow(16 , y);// converting hexadecimal to integer value ++y; } return dec; } int main(){ char hex[100]; printf("Enter Hexadecimal: "); scanf("%s", hex); printf("\nDecimal: %d", hextodc(hex)); return 0; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
1. Enter Hexadecimal: A Decimal: 10 2. Enter Hexadecimal: A12 Decimal: 2578
Giải thích
Quét tất cả các ký tự của Hex từ phải sang trái
Đặt ký tự được quét là A.
Chuyển A sang dạng thập phân thích hợp và lưu trữ nó trong x.
dec =dec + x * 16y
y =y + 1.
Trả về số thập phân.
Chúng ta cũng có thể quét giá trị Hệ thập lục phân từ Trái sang Phải nhưng, chúng ta phải khởi tạo y là y =N - 1 và giảm y trên mỗi lần lặp. N là độ dài của Hệ thập lục phân.