easyxtarget
easyxtarget

Reputation: 105

Convert Int to Char Array

I need to make a class called MyInt which handles any size positive numbers by creating an int array. I am making a constructor to be used in converting an int (any size supported by ints) into a MyInt. I need to convert the int into a char array and then read digit by digit into the int array. So my question is, without using any libraries except <iostream> <iomanip> and <cstring> how can I convert an int with multiple digits into a character array?

Upvotes: 0

Views: 16473

Answers (3)

Antonin Portelli
Antonin Portelli

Reputation: 698

You don't need to make a char array as an intermediary step. The digits (I assume in base 10) can be obtained one by one using modulo 10 operations. Something like:

convert(int *ar, const int i)
{
    int p, tmp;

    tmp = i
    while (tmp != 0)
    {
        ar[p] = tmp % 10;
        tmp   = (tmp - ar[p])/10;
        p++;
    }
}

Upvotes: 2

Qaz
Qaz

Reputation: 61900

One possible way of doing that conversion with such restraints is as follows:

function convert:
    //find out length of integer (integer division works well)
    //make a char array of a big enough size (including the \0 if you need to print it)
    //use division and modulus to fill in the array one character at a time
    //if you want readable characters, don't forget to adjust for them
    //don't forget to set the null character if you need it

I hope I didn't misunderstand your question, but that worked for me, giving me a printable array that read the same as the integer itself.

Upvotes: 0

Noah Roth
Noah Roth

Reputation: 9220

Not sure if this is what you want, but:

int myInt = 30;
char *chars = reinterpret_cast<char*>(&myInt);

And you can get the 4 separate char's:

chars[0]; // is the first char
chars[1]; // is the second char
chars[2]; // is the third char, and
chars[3]; // is the fourth/last char

...but I'm not entirely sure if that's what you are looking for.

Upvotes: 0

Related Questions