문제
C 프로그래밍 언어를 사용하여 16진수 값을 정수 값으로 변환하는 방법은 무엇입니까?
개념을 설명합니다.
해결책
16진수 값은 1~9 및 A~F의 16개 기호로 표시됩니다. 여기서 A~F에 해당하는 10진수 값은 10~15입니다.
예시
다음은 함수를 사용하여 16진수를 정수로 변환하는 C 프로그램입니다 -
#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; }
출력
위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -
1. Enter Hexadecimal: A Decimal: 10 2. Enter Hexadecimal: A12 Decimal: 2578
설명
16진수의 모든 문자를 오른쪽에서 왼쪽으로 스캔
스캔한 문자를 A로 설정합니다.
A를 적절한 십진수 형식으로 변환하고 x에 저장합니다.
12월 =12월 + x * 16년
y=y + 1.
소수를 반환합니다.
왼쪽에서 오른쪽으로 16진수 값을 스캔할 수도 있지만 y를 y =N – 1로 초기화하고 각 반복에서 y를 감소시켜야 합니다. N은 16진수의 길이입니다.