Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 언어를 사용하여 16진수를 정수 값으로 변환

<시간/>

문제

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진수의 길이입니다.