How to convert an integer to a string in base b with C

1 Answer

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

void intToBase(int number, int base, char *output) {
    const char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char buffer[65]; // Enough for base 2 of a 64-bit number
    int i = 0;

    if (number == 0) {
        strcpy(output, "0");
        return;
    }

    int isNegative = number < 0;
    unsigned int n = isNegative ? -number : number;

    while (n > 0) {
        buffer[i++] = digits[n % base];
        n /= base;
    }

    if (isNegative) {
        buffer[i++] = '-';
    }

    buffer[i] = '\0';

    // Reverse the string
    for (int j = 0; j < i; j++) {
        output[j] = buffer[i - j - 1];
    }
    output[i] = '\0';
}

int main() {
    int number = 255;
    char result[65];

    int bases[] = {2, 8, 16, 36};
    
    for (int i = 0; i < 4; i++) {
        int base = bases[i];
        intToBase(number, base, result);
        printf("%d in base %d = %s\n", number, base, result);
    }

    return 0;
}



/*
run:

255 in base 2 = 11111111
255 in base 8 = 377
255 in base 16 = FF
255 in base 36 = 73

*/

 



answered Aug 17, 2025 by avibootz

Related questions

...