comment transformer 2 btys de 8 oct en 1 de 16 ou cumuler les 2 de 8

bonjour,

je galère un peu …(beaucoup en fait!)

je ne trouve pas comment cumuler et non additionner deux bites de 8 octes en 1 seul de 16 octes!

je m’explique :

je récupéré Bty1 sur 8 oct en binaire et Bty2 en 8 oct en binaire aussi je dois cumuler soit lire sur 16octs la valeur binaire pour la transformer en hex ou décimale !!

voir pièce jointe (parviens pas a mètre photo)

exemple j’ai 1er byte : 0000 0001 2eme: 0000 1101
et je veux 000 0001 0000 1101 et pas (00000001+00001101)

merci
a+ gf

Voir word(h,l) dans le site Arduino/ reference

Bonjour,

Le texte façon SMS ça fait mal aux yeux …

Ce que tu cherche à faire c’est du bitwise.

uint8_t val1, val2;
uint16_t val3;

val3 = ((uint16_t) val1 << 8) | val2;

→ Tu décales val1 de 8 bits vers la gauche (bits de poids fort) puis tu faits un OU “bits à bits” des 8 bits de poids faibles.

→ Tu décales val1 de 8 bits vers la droite (bits de poids fort)

Moi j’aurais dit vers la gauche :wink:

fdufnews: Moi j'aurais dit vers la gauche ;)

Heu oui l'autre droite effectivement :grin: J'edit, ni vue, ni connu :P

OK et merci pour les infos ! super

merci papybricol je te confirme ça marche nickel !!

skywodd merci a toi aussi j’avais bien essayé de transformer uint8_t en uint16_t mais pas réussi !! j'essai avec ta formule aussi pour voir le plus simple et le moins consommateur de mémoire !!

Merci pour votre rapidité et efficacité! :D a+ gf

gef13:
skywodd merci a toi aussi j’avais bien essayé de transformer uint8_t en uint16_t mais pas réussi !!
j’essai avec ta formule aussi pour voir le plus simple et le moins consommateur de mémoire !!

Si on y regarde de plus prés :

// Arduino.h
uint16_t makeWord(uint16_t w);
uint16_t makeWord(byte h, byte l);

#define word(...) makeWord(__VA_ARGS__)

// WMath.cpp
unsigned int makeWord(unsigned int w) { return w; }
unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; }

Donc au final ça revient à faire ma formule, mais sans le savoir :wink: