I have an integer array
int number[] = {1,2,3,4};
What can I do to get int x = 1234? I need to have a c version of it.
x = 1000*number[0] + 100*number[1] + 10*number[2] + number[3];
This is basically how decimal numbers work. A more general version (when you don't know how long 'number' is) would be:
int x = 0;
int base = 10;
for(int ii = 0; ii < sizeof(number); ii++) x = base*x + number[ii];
Note - if base
is something other than 10, the above code will still work. Of course, if you printed out x
with the usual cout<<x
, you would get a confusing answer. But it might serve you at some other time. Of course you would really want to check that number[ii]
is between 0 and 9, inclusive - but that's pretty much implied by your question. Still - good programming requires checking, checking, and checking. I'm sure you can add that bit yourself, though.
You can think of how to "shift over" a number to the left by multiplying by ten. You can think of appending a digit by adding after a shift.
So you effectively end up with a loop where you do total *= 10
and then total += number[i]
Of course this only works if your array is digits, if it is characters you'll want to do number[i] - '0'
and if it is in a different base you'll want to multiply by a different number (8 for instance if it is octal).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With