Короткий ответ, вы бы не стали.
Длинный ответ, есть несколько проблем с этим. Первая большая проблема заключается в том, что если мы предположим, что bin - это стандартный массив символов длины "size", то ваша первая печать недействительна. Индекс массива отключен на 1. Рассмотрим пример кода:
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]));
}
Который производит:
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
Судя по полученному вами результату, я думаю, вы сделали что-то вроде:
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]));
}
Это объясняет, что вы видели отлично. Итак, я думаю, что ваше предположение о том, что bin указывает на массив нулей символов, неверно. Есть несколько действительно больших проблем с этим, при условии, что вы сделали что-то подобное.
- Ваше предположение о том, что вся память равна нулю, неверно, и вам нужно объяснить это или опубликовать реальный код, и мы сделаем
- Вы не можете просто рассматривать буфер целых чисел как символы - строка состоит из однобайтовых символов (обычно), целые числа составляют 4 байта, обычно
- Массивы в C ++ начинаются с 0, а не с 1
- Преобразование символа в целое число [int ('0')] не приводит к интеллектуальному преобразованию - полученное целое число - это десятичное 48, а не десятичное 0 (есть функция atoi, которая будет делать это, так как а также другие лучшие или другое предложение использовать вычитание)