8Bit Array (2 Elemente) in eine 16Bit Variable packen

Gast #4607473
Hallo,

ich hab eine Funktion, der ich einen Zeiger übergebe!
"DeviceID"

nun möchte ich, dass die Werte, die im uint8_t Array "Receive_buf"
stehen, an die Adresse des Zeigers "DeviceID"
geschrieben werden,
dabei sollen oberes und unteres Byte miteinander vertauscht werden!!!


Das hier tut's leider nicht!!
Die letzte Zuweisung klappt nicht!
Steht immer 0 drin?!

void Function(uint16_t  *DeviceID)
{
    static uint8_t PtrReg[2];
    static uint8_t Receive_buf[2]; // 2 bytes are going to be received!
    static uint8_t DeviceID8_0;
    static uint8_t DeviceID8_1;
    PtrReg[0]= 0xFF;

    GetData(PtrReg,  Receive_buf, 1, 2);
    DeviceID8_0 =  Receive_buf[1];
    DeviceID8_1 =  Receive_buf[0];
    DeviceID =  ((uint16_t) DeviceID8_1 << 8 | DeviceID8_0);

}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.