Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,951 questions

51,893 answers

573 users

How to convert octal to hexadecimal in C

2 Answers

0 votes
#include <stdio.h>
#include <string.h>

int main()
{
    int zero_to_7_binary[] = {0, 1, 10, 11, 100, 101, 110, 111};

    long long octal = 375, binary = 0, pos = 1;
    char hex[32] = "";
    int reminder;

    while(octal > 0) {
        reminder = octal % 10;
        binary = (zero_to_7_binary[reminder] * pos) + binary;
        octal /= 10;
        pos *= 1000;
    }

    while(binary > 0) {
        reminder = binary % 10000;
        switch(reminder) {
            case 0:
                strcat(hex, "0"); break;
            case 1:
                strcat(hex, "1"); break;
            case 10:
                strcat(hex, "2"); break;
            case 11:
                strcat(hex, "3"); break;
            case 100:
                strcat(hex, "4"); break;
            case 101:
                strcat(hex, "5"); break;
            case 110:
                strcat(hex, "6"); break;
            case 111:
                strcat(hex, "7"); break;
            case 1000:
                strcat(hex, "8"); break;
            case 1001:
                strcat(hex, "9"); break;
            case 1010:
                strcat(hex, "A"); break;
            case 1011:
                strcat(hex, "B"); break;
            case 1100:
                strcat(hex, "C"); break;
            case 1101:
                strcat(hex, "D"); break;
            case 1110:
                strcat(hex, "E"); break;
            case 1111:
                strcat(hex, "F"); break;
            break;
        }

        binary /= 10000;
    }

    strrev(hex);

    printf("%s", hex);

    return 0;
}




/*
run:

FD

*/

 



answered Aug 25, 2021 by avibootz
0 votes
#include <stdio.h>
#include <math.h>

int main()
{
    int octal = 375, reminder, i = 0, decimal = 0, pos = 0;
    char hex[32];

    // Octal to decimal
    while(octal!=0) {
        decimal = decimal + (octal % 10) * pow(8, pos);
        pos++;
        octal = octal / 10;
    }
    // Decimal to hexadecimal
    while(decimal!=0) {
        reminder = decimal % 16;
        if(reminder<10)
            hex[i++] = reminder + 48; // 48 = Ascii -> 0
        else
            hex[i++] = reminder + 55; //55 = Ascii -> 7
        decimal /= 16;
    }
    for(int j = i - 1; j >= 0; j--)
        printf("%c", hex[j]);

    return 0;
}




/*
run:

FD

*/

 



answered Aug 25, 2021 by avibootz
edited Aug 25, 2021 by avibootz

Related questions

1 answer 169 views
1 answer 111 views
111 views asked Aug 25, 2021 by avibootz
1 answer 138 views
1 answer 110 views
110 views asked Jul 24, 2022 by avibootz
1 answer 158 views
...