J'ai une situation où je passe un tableau contenant 2 valeurs de 1 octet à une fonction, mais d'une certaine manière la fonction pense que le tableau a 4 octets de long, ce qui gâche ma manipulation de bits temps. J'ai même essayé explicitement de couler chaque valeur de tableau comme uint8
, mais en vain. Des idées sur ce qui pourrait arriver? Utilisation des outils gcc de cygwin sur Eclipse Mars.1.C convertir des valeurs de 8 bits en valeurs de 16 bits
typedef char uint8; //char is 1 byte in my system.
void setBitArray(uint8 bitArray[], int first, int last, uint8 type) {
if(first >= 0 && last < sizeof(bitArray) * 8) { // If the block is in bounds
...
}
}
...
int main() {
uint8 bitArray[2] = {(uint8)0, (uint8)0};
setBitArray(bitArray, 0,10, 1);
return 0;
}
EDIT
une chose. sizeof (bitArray) donne 2 octets dans main().
Vous ne pouvez pas utiliser 'sizeof' sur un paramètre de tableau. Voir [cette réponse] (https://stackoverflow.com/questions/37538/how-do-i-determine-the-size-of-my-array-in/10349610#10349610). – kaylum
Non 16 bits mais 32 bits –
J'ai utilisé sizeof (array)/sizeof (element) tout le temps pour trouver le nombre d'éléments. http://stackoverflow.com/questions/37538/how-do-i-determine-the-size-of-my-array-in-c – AaronF