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

C प्रोग्राम: हेक्साडेसिमल को ऑक्टल में बदलें

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

हेक्साडेसिमल → ऑक्टल रूपांतरण दो चरणों में किया जाता है:

  1. हेक्स → बाइनरी: प्रत्येक हेक्स अंक → 4 बिट बाइनरी
  2. बाइनरी → ऑक्टल: 3 बिट्स के समूह → 1 ऑक्टल अंक

उदाहरण: 1A6 हेक्स → ऑक्टल

चरण 1: हेक्स → बाइनरी
1  = 0001
A  = 1010
6  = 0110
बाइनरी: 0001 1010 0110

चरण 2: बाइनरी → ऑक्टल (3-3 बिट्स समूह)
000 110 100 110
0    6    4    6
ऑक्टल: 646

संदर्भ तालिकाएं

हेक्सबाइनरीऑक्टल
000000
100011
200102
300113
401004
501015
601106
701117
8100010
9100111
A101012
B101113
C110014
D110115
E111016
F111117

C प्रोग्राम

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

long long hex_to_binary(char hex[]) {
    long long binary = 0;
    long long place = 1;
    
    for (int i = strlen(hex) - 1; i >= 0; i--) {
        int val;
        char c = hex[i];
        
        if (c >= '0' && c <= '9') val = c - '0';
        else if (c >= 'A' && c <= 'F') val = c - 'A' + 10;
        else if (c >= 'a' && c <= 'f') val = c - 'a' + 10;
        else {
            printf("अमान्य हेक्स अंक: %c\n", c);
            return -1;
        }
        
        // 4 बिट्स जोड़ें
        binary += val * place;
        place *= 10000;  // 4 दशमलव स्थान = 1 हेक्स अंक
    }
    return binary;
}

long long binary_to_octal(long long binary) {
    long long octal = 0;
    long long place = 1;
    
    while (binary > 0) {
        int rem = binary % 1000;  // 3 बिट्स लें
        int val;
        
        switch (rem) {
            case 0: val = 0; break;
            case 1: val = 1; break;
            case 10: val = 2; break;
            case 11: val = 3; break;
            case 100: val = 4; break;
            case 101: val = 5; break;
            case 110: val = 6; break;
            case 111: val = 7; break;
            default: val = 0;
        }
        
        octal += val * place;
        binary /= 1000;
        place *= 10;
    }
    return octal;
}

long long hex_to_octal(char hex[]) {
    long long binary = hex_to_binary(hex);
    if (binary == -1) return -1;
    return binary_to_octal(binary);
}

int main() {
    char hex[20];
    printf("हेक्साडेसिमल संख्या दर्ज करें: ");
    scanf("%19s", hex);
    
    long long octal = hex_to_octal(hex);
    if (octal != -1)
        printf("ऑक्टल मान = %lld\n", octal);
    
    return 0;
}

नमूना आउटपुट

हेक्साडेसिमल संख्या दर्ज करें: 1A6
ऑक्टल मान = 646

हेक्साडेसिमल संख्या दर्ज करें: 5CD
ऑक्टल मान = 2715

सरल दृष्टिकोण (strtoul का उपयोग)

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

int main() {
    char hex[20];
    printf("हेक्स दर्ज करें: ");
    scanf("%s", hex);
    
    unsigned long val = strtoul(hex, NULL, 16);
    printf("ऑक्टल: %lo\n", val);
    return 0;
}

महत्वपूर्ण नोट्स

  • पहला दृष्टिकोण दिखाता है कि रूपांतरण आंतरिक रूप से कैसे काम करता है
  • दूसरा दृष्टिकोण उत्पादन कोड के लिए व्यावहारिक है
  • बड़ी संख्याओं के लिए, मनमाना-परिशुद्धता पुस्तकालयों का उपयोग करें
  • हेक्स इनपुट केस-असंवेदनशील होना चाहिए
  1. पायथन प्रोग्राम: दशमलव को बाइनरी संख्या में बदलें पायथन प्रोग्राम: दशमलव को बाइनरी संख्या में बदलें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक दशमलव संख्या दी गई है, जिसे उसके बाइनरी समकक्ष में बदलना है। दिए गए समस्या को हल करने के दो दृष्टिकोण हैं। आइए उन्हें एक-एक करके देखें। पुनरावर्ती दृष्टिकोण उदाहरण 1: DecimalToBinary(num // 2) print(num % 2, en

  1. - पायथन प्रोग्राम फ्लोटिंग को बाइनरी में बदलने के लिए

    एक फ्लोटिंग पॉइंट मान दिया गया है और दशमलव स्थानों की संख्या इनपुट करें, हमारा कार्य इसे बाइनरी रूप में बदलना है। सबसे पहले हम फ्लोटिंग पॉइंट मान से पूर्णांक भाग लेते हैं और इसे बाइनरी में बदलते हैं फिर भिन्नात्मक भाग लेते हैं और इसे बाइनरी रूप में बदलते हैं और अंत में दोनों को जोड़ते हैं। उदाहरण फ

  1. - पायथन का उपयोग करके दशमलव को बाइनरी, ऑक्टल और हेक्साडेसिमल में कैसे बदलें

    समस्या विवरण पायथन दशमलव को बाइनरी, ऑक्टल और हेक्साडेसिमल में बदलने के लिए सीधे फंक्शन प्रदान करता है। ये फंक्शन हैं: बाइनरी: bin() ऑक्टल: oct() हेक्साडेसिमल: hex() उदाहरण आप इन फंक्शन का उपयोग संबंधित प्रतिनिधित्व प्राप्त करने के लिए निम्नानुसार कर सकते हैं: decimal = 27 print(bin(decimal), बाइनर