Short answer, you wouldn't.
Long answer, there are a few issues with this. The first big issue is that if we assume bin is a standard array of characters of length "size", then your first print is invalid. The array index is off by 1. Consider the code example:
int size = 16; char * bin = new char[size]; for(int i=0; i<size; i++) { bin[i] = 0; } for(int num_bits = size; num_bits>0; num_bits--) { printf("String sub %i is %i\n", num_bits, int(bin[num_bits])); }
Which produces:
String sub 16 is -3 String sub 15 is 0 String sub 14 is 0 String sub 13 is 0 String sub 12 is 0 String sub 11 is 0 String sub 10 is 0 String sub 9 is 0 String sub 8 is 0 String sub 7 is 0 String sub 6 is 0 String sub 5 is 0 String sub 4 is 0 String sub 3 is 0 String sub 2 is 0 String sub 1 is 0
Judging by the actual output you got, I'm guessing you did something like:
int size=16; int * ints = new int[size]; char * bin; //Fill with numbers, not zeros, based on the evidence for(int i=0; i<size; i++) { ints[i] = 20 + i; } //Copy over to character buffer bin = (char*)(void*)&(ints[0]); for(int num_bits = size; num_bits>0; num_bits--) { printf("String sub %i is %i\n", num_bits, int(bin[num_bits])); }
That explains the output you saw perfectly. So, I'm thinking your input assumption, that bin points to an array of character zeros, is not true. There are a few really big problems with this, assuming you did something like that.
- Your assumption that the memory is all zero is wrong, and you need to explain that or post the real code and we will
- You can't just treat a memory buffer of integers as characters - a string is made up of one byte characters (typically), integers are 4 bytes, typically
- Arrays in C++ start at 0, not 1
- Casting a character to an integer [ int('0') ] does not intelligently convert - the integer that comes out of that is a decimal 48, not a decimal 0 (there is a function atoi that will do that, as well as other better ones, or the other suggestion to use subtraction)
binarray about?(int)strtol(bit_string, NULL, 2);? Unless this is homework (or something similar) writing your own routine seems pretty pointless.binis declared and initialized. And what'ssize?