Je travaille avec un protocole propriétaire qui transmet des entiers en tant que complément de 16 bit deux en deux parties. Le LSB est transmis en premier suivi du MSB. Le code suivant pour restaurer la valeur d'origine est-il correct?Joindre MSB et LSB d'un entier signé de 16 bits (complément à deux)
unsigned char message[BLK_SIZE];
// read LSB to message[0] and MSB to message[1]
short my_int = (message[1] << 8) | message[0];
Attend OK pour moi - ce qui vous fait penser que ce ne soit pas correct? –
Oui, ça a l'air OK. Vous devriez écrire un test pour cela, qui vous dira si c'est OK dans le contexte de votre application spécifique. –
@Paul: Ah j'aurais dû le mentionner. Je ne suis pas sûr parce que: 1) IIRC court n'est pas garanti être 16bit. Qu'est-il arrivé si son 8 ou 32? 2) opérer sur un char non signé et l'affecter à un court fonctionne comme prévu? – Marco