Ich versuche, ein serielles Programm mit C++ herauszufinden. Ich sende ein char-Array, das aus mehreren uint8_t und mehreren uint16_t besteht, die ich aufteilen und senden möchte.Unsigned Int-Konvertierung C++
char buf[3];
uint16_t var=1500;
Was zwischen diesen die Differenz (falls vorhanden) ist:
buf[0]= var & 0xFF; buf[1]= var >> 8;
und
buf[0]= (uint8_t)(var & 0xFF); buf[1]= var >> 8;
Das andere Ende erwartet 16bit ganze Zahlen mit LSB zuerst und aus irgendeinem Grund, den ich gerade don‘ Ich denke, ich bekomme den erwarteten seriellen Schreibvorgang. Ich weiß, dass es eine Vielzahl von Gründen dafür gibt, aber ich versuche nur, das Konzept hier zu verstehen.
Was ist der Unterschied? Eine der Zeilen enthält eine C-Style-Umwandlung in "uint8_t" und die andere nicht. Welche Frage stellst du wirklich hier? –
Verwendet dieses "andere Ende" vielleicht eine andere Endianz als der Sender? – orphen
Ich bin neugierig, warum Sie 'var & 0xff' machen. Wird die implizite/explizite Umwandlung die höchstwertigen Bits nicht bereits abschneiden? –