Hallo habe ein Array Feld 0 und 1 data[0]=0x82; data[1]=0x6; ich will nun daraus 0x682 machen habe folgendes gemacht uint8_t data[2]; uint8_t ergebniss=0; ergebniss=data[1]<<8 & data[0]; es sollte dann 0x682 rauskommen.
Andreas Herrmann schrieb: > ergebniss=data[1]<<8 & data[0]; du meintest sicher : ergebniss=data[1]<<8 | data[0]; //binäres oder, nicht und außerdem ist ergebniss mit 8 Bit zu klein, da steht dann auch nur das drin, was ind data[0] drinsteht. :-)
Andreas Herrmann schrieb: > uint8_t ergebniss=0; > ergebniss=data[1]<<8 & data[0]; > > es sollte dann 0x682 rauskommen. Und wie sollte das in ein uint8_t passen?
Ich würde übrigens empfehlen, bei Shifts es immer in Klammern zu schreiben, also uint16_t ergebniss = (data[1] << 8) | data[0]; Ist zwar bei dem binären ODER nicht notwendig, aber z.B. das hier gibt nicht das gewünschte Resultat, obwohl man das auf den ersten Blick meinen würde: uint16_t ergebniss = data[1]<<8 + data[0]; da + und - eine höhere Ordnung als der Shift-Operator haben und es so ausgewertet wird: uint16_t ergebniss = data[1] << (8 + data[0]);
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.