Bonjour,

je reçois par le réseau des données, je vais avoir par exemple un entier sur 4 octets, stocké dans un buffer.

le code suivant est-il toujours correct ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
unsigned char buffer[100];
 
/* buffer[1..4] va contenir mon entier */
 
int n = *((int *)&buffer[1]); /* je suppose que sizeof(int) == 4, et je me fous de l'endianness, l'important n'est pas là */
Je pense que ce n'est pas correct. A cause du fait que &buffer[1] n'est pas forcément correctement placé en mémoire pour pointer vers un int, et qu'il faut faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
memcpy(&n, &buffer[1], 4);
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
n = buffer[1] * ? + buffer[2] * ? + etc...

J'ai raison ou pas ?