Réponse courte, vous ne le feriez pas.
Longue réponse, il y a quelques problèmes avec cela. Le premier gros problème est que si nous supposons que bin est un tableau standard de caractères de taille "taille", alors votre première impression est invalide. L'indice de tableau est désactivée par 1. Prenons l'exemple de code:
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]));
}
qui produit:
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
A en juger par la sortie réelle que vous avez, je suppose que tu as fait quelque chose comme:
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]));
}
Cela explique la sortie que vous avez vu parfaitement. Donc, je pense que votre hypothèse d'entrée, que bin pointe vers un tableau de zéros de caractères, n'est pas vraie. Il y a quelques gros problèmes avec cela, en supposant que vous ayez fait quelque chose comme ça.
- Votre hypothèse que la mémoire est tout à zéro est faux, et vous devez expliquer ou afficher le code réel et nous
- Vous ne pouvez pas traiter seulement une mémoire tampon des entiers comme des caractères - une chaîne est constitué d'un caractère d'octet (typiquement), les entiers sont de 4 octets, typiquement
- Arrays en C++ commencent à 0, pas 1
- jetant un caractère à un nombre entier [int (« 0 »)] ne convertit pas intelligemment - l'entier qui en sort est un nombre décimal 48, pas un nombre décimal 0 (il y a une fonction atoi qui fera cela, ainsi que d'autres meilleurs, ou l'autre suggestion d'utiliser le soustrac tion)
Vous semblez manquer un peu de code. –
Quel est le tableau 'bin'? –
Pourriez-vous s'il vous plaît poster le reste du code, en particulier ce que bin [] est? – schnaader