Je suis nouveau pour les endans. J'essaye de convertir un grand tableau d'entiers endian en chaîne hexadécimale en petit boutiste. J'ai essayé de convertir le grand tableau d'entiers endian en petite chaîne hexa décimale d'Endian. Mais à la fin, obtenir de gros caractères hexadécimaux codés en hexadécimal plutôt que du petit boutiste. S'il vous plaît aidez-moiconvertir tableau entier signé en gros endian en hexa décimal 16 bits en petit boutiste en c
gint16 frame[5] = {10, -26, 35, 7, -35}; //big endian
gint16 frame_i[5];
size_t i;
for (i= 0; i < 5; i++) {
frame_i[i] = (frame[i] << 8) | ((frame[i] >> 8) & 0xFF); //big endian to little endian
}
char *str = malloc(5 * 4 + 1);
size_t j;
for (j= 0; j < 5; j++) {
snprintf(str + j * 4, 5, "%04X", frame_i[j] & 0xFFFF); // getting big endian instead of little endian
}
Je ne peux pas imaginer pourquoi vous avez besoin d'une chaîne little-endian. Les représentations textuelles des nombres sont toujours m.s. chiffre en premier. L'endianness n'a rien à voir avec la façon dont les tableaux sont organisés: le problème est la séquence d'octets en mémoire qu'une valeur multi-octets est naturellement stockée par le processeur. S'il vous plaît [lire à propos de l'endianness] (https://en.wikipedia.org/wiki/Endianness). –
En outre cette ligne '(frame_i [i] << 8) | ((frame_i [i] >> 8) & 0xFF); 'n'a aucun effet - la valeur de l'expression n'est pas affectée. –
Veuillez poster l'exemple [Minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) qui évitera les erreurs idiotes dans la question, laissant planer le doute qu'il pourrait y avoir plus d'erreurs de transcription. –