Bonjour,

Je suis confronté à un petit problème qui est sans doute tout bête, mais j'ai la tête un peu dans le guidon, et je ne vois du coup pas d'où vient de problème.
Je récupère un tableau de uint8_t (des octets non signés) et je veux les concaténer pour obtenir un uint32_t (double word non signé).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
spi_write_read(write_buffer, 4, receive_buffer, 4, 4); // remplit receive_buffer avec 4 octets
retour = ((uint32_t)(receive_buffer[0]) << 24) | ((uint32_t)(receive_buffer[1]) << 16) | (receive_buffer[2] << 8) | receive_buffer[3];// concatène les 4 octets pour en faire un gros mot
Cela semble fonctionner lorsque receive_buffer[0] et [1] sont nuls...
Mais dès lors qu'il ne le sont pas, la concaténation donne : 0xFFFF3210 par exemple, alors que retour devrait valoir : 0x01903210

Merci pour vos réponses qui seront éclairantes

À plus