Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा में हेक्साडेसिमल को पूर्णांक (Integer) में बदलना

समस्या

C प्रोग्रामिंग भाषा का उपयोग करके हेक्साडेसिमल मान को पूर्णांक मान में कैसे बदलें?

समाधान

हेक्साडेसिमल मान 16 प्रतीकों में दर्शाए जाते हैं: 0-9 और A-F। यहां A-F का दशमलव समतुल्य 10-15 है।

रूपांतरण तर्क

हेक्स: A12
स्थिति:  2 1 0  (दाएं से बाएं, 0-आधारित)
मान:   10 1 2  (A=10, 1=1, 2=2)

दशमलव = 10×16² + 1×16¹ + 2×16⁰
       = 10×256 + 1×16 + 2×1
       = 2560 + 16 + 2
       = 2578

प्रोग्राम: कस्टम फ़ंक्शन का उपयोग करके

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <ctype.h>

int hexToDecimal(char *hex) {
    int decimal = 0;
    int len = strlen(hex);
    
    for (int i = 0; i < len; i++) {
        char ch = toupper(hex[i]);  // बड़े अक्षर में बदलें
        int digit;
        
        if (ch >= '0' && ch <= '9') {
            digit = ch - '0';
        } else if (ch >= 'A' && ch <= 'F') {
            digit = ch - 'A' + 10;
        } else {
            printf("अमान्य हेक्स कैरेक्टर: %c\n", ch);
            return -1;
        }
        
        // स्थिति मूल्य: 16^(len-1-i)
        decimal += digit * pow(16, len - 1 - i);
    }
    
    return decimal;
}

int main() {
    char hex[100];
    
    printf("हेक्साडेसिमल मान दर्ज करें: ");
    scanf("%s", hex);
    
    int decimal = hexToDecimal(hex);
    if (decimal != -1) {
        printf("दशमलव: %d\n", decimal);
    }
    
    return 0;
}

आउटपुट


हेक्साडेसिमल मान दर्ज करें: A
दशमलव: 10

हेक्साडेसिमल मान दर्ज करें: A12
दशमलव: 2578

हेक्साडेसिमल मान दर्ज करें: FF
दशमलव: 255

हेक्साडेसिमल मान दर्ज करें: 10
दशमलव: 16

सरल विधि: scanf के साथ %x फॉर्मेट

#include <stdio.h>

int main() {
    unsigned int num;
    
    printf("हेक्साडेसिमल दर्ज करें (0x के बिना): ");
    scanf("%x", &num);  // %x हेक्स पढ़ता है
    
    printf("दशमलव: %d\n", num);
    printf("हेक्स: 0x%X\n", num);
    printf("ऑक्टल: %o\n", num);
    printf("बाइनरी: ");  // बाइनरी के लिए कस्टम फ़ंक्शन चाहिए
    
    return 0;
}

आउटपुट


हेक्साडेसिमल दर्ज करें (0x के बिना): FF
दशमलव: 255
हेक्स: 0xFF
ऑक्टल: 377

printf में हेक्स प्रिंट करना

फॉर्मेटआउटपुटउदाहरण (255 के लिए)
%xलोअरकेस हेक्सff
%Xअपरकेस हेक्सFF
%#x0x प्रीफिक्स के साथ लोअरकेस0xff
%#X0X प्रीफिक्स के साथ अपरकेस0XFF

हेक्स स्ट्रिंग को पूर्णांक में (strtol)

#include <stdio.h>
#include <stdlib.h>

int main() {
    char *hexStr = "1A3F";
    char *endptr;
    
    long value = strtol(hexStr, &endptr, 16);  // आधार 16
    
    if (*endptr == '\0') {
        printf("दशमलव: %ld\n", value);  // 6719
    } else {
        printf("अमान्य हेक्स स्ट्रिंग\n");
    }
    
    return 0;
}

पूर्णांक को हेक्स स्ट्रिंग में (sprintf)

#include <stdio.h>

int main() {
    int num = 6719;
    char hexStr[20];
    
    sprintf(hexStr, "%X", num);   // अपरकेस
    printf("हेक्स: %s\n", hexStr);  // 1A3F
    
    sprintf(hexStr, "0x%04X", num); // पैडेड विथ 0x
    printf("फॉर्मेटेड: %s\n", hexStr); // 0x1A3F
    
    return 0;
}

सारांश

  • मैन्युअल रूपांतरण: प्रत्येक अंक को 16^स्थिति से गुणा करें
  • आसान इनपुट: scanf("%x", &num)
  • आसान आउटपुट: printf("%X", num)
  • मजबूत पार्सिंग: strtol(str, NULL, 16)
  • स्ट्रिंग रूपांतरण: sprintf(buf, "%X", num)
  1. C++ में डेसिमल से हेक्साडेसिमल रूपांतरण C++ में डेसिमल से हेक्साडेसिमल रूपांतरण

    एक डेसिमल संख्या इनपुट के रूप में दी गई है, कार्य दी गई डेसिमल संख्या को हेक्साडेसिमल संख्या में बदलना है। कंप्यूटर में हेक्साडेसिमल संख्या को आधार 16 के साथ दर्शाया जाता है और डेसिमल संख्या को आधार 10 के साथ दर्शाया जाता है और मान 0-9 से दर्शाए जाते हैं जबकि हेक्साडेसिमल संख्या में 0-15 से अंक होते

  1. - C# में 64-बिट साइन्ड इंटीजर (long) से Decimal में अंतर्निहित रूपांतरण

    long टाइप 64-बिट साइन्ड इंटीजर को दर्शाता है।64-बिट साइन्ड इंटीजर को Decimal में अंतर्निहित रूप से बदलने के लिए, पहले एक long मान सेट करें।long val = 989678876876876;long को decimal में बदलने के लिए, मान असाइन करें।dec = val;आइए एक और उदाहरण देखें:उदाहरणusing System; public class Demo {    

  1. - Python में इंटीजर को हेक्साडेसिमल स्ट्रिंग में कैसे बदलें?

    किसी भी इंटीजर को उसके हेक्साडेसिमल प्रतिनिधित्व में बदलने के लिए बिल्ट-इन `hex()` फंक्शन का उपयोग कर सकते हैं। >>> hex(100) 0x64 >>> hex(4095) 0xfff >>> hex(31) 0x1f