Concaténation octets en uint32
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:
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