-         

Ergebnis 1 bis 6 von 6

Thema: 16bit in high and low bit aufteilen

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.11.2006
    Ort
    Geislingen a. d. Steige
    Alter
    26
    Beiträge
    344

    16bit in high and low bit aufteilen

    Anzeige

    Hi,
    ich möchte eine 16 bit variable in zwei 8 bit varialblen aufteilen. Kann mir jemand sagen wie ich 16bit in high und low bit aufteilen kann.

    MfG Martin

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.190
    Input = low;
    Input >>=8;
    Input =high;
    So sollte es gehen.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    21.03.2004
    Ort
    73061 Ebersbach
    Alter
    48
    Beiträge
    52
    und ich wollte es über die Bitoperatoren lösen

    byte = 16 bit variable

    low = byte & 0xFF00
    high = byte & 0x00FF >>8
    Das, was immer von jedermann und überall als richtig akzeptiert wurde, ist mit ziemlicher Gewißheit das Falsche.
    Paul Valéry (1871-1945), frz. Dichter

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.11.2006
    Ort
    Geislingen a. d. Steige
    Alter
    26
    Beiträge
    344
    Danke für die hilfe, so funktioniert es jetzt.
    MfG Martin

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    12.01.2007
    Beiträge
    93
    ich würds mit union machen

    Code:
    typdef union {
       uint8_t byte[2];
       uint16_t word;
       } byte_t
    
    byte_t variable;
    
    variable.word = 0xAF;
    variable.byte[0] = 0xF;
    variable.byte[1] = 0xA;
    so könntest ne variable initialisieren wenn du bereits ne uint16 hast dann einfach casten

    Code:
     (byte_t *) variable16bit;
    und dann wie oben, ähnlich wie bei ner struct auf die elemente zugreifen.


    ps: ich bin mir jetzt nicht sicher mit byte[0] ob der das LSB nimmt denke aber schon.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Zitat Zitat von bL1nK
    ich würds mit union machen
    Wobei es etwas missverständlich ist, die "byte_t" zu nennen, weil ja insgesamt 16 Bits drinne sind.

    Code:
    #include <inttypes.h>
    
    typdef union
    {
       uint8_t asByte[2];
       uint16_t asWord;
    } data16_t;
    
    data16_t variable;
    
    variable.asWord = 0x1234;
    variable.asByte[0] = 0x34;
    variable.asByte[1] = 0x12;
    Zitat Zitat von bL1nK
    ps: ich bin mir jetzt nicht sicher mit byte[0] ob der das LSB nimmt denke aber schon.
    Das ist architekturabhängig, s.g. Endianess. Für AVR (bzw. avr-gcc) ist das der Fall. Wenn man also Kommunikation macht, muss man da schon aufpassen.
    Disclaimer: none. Sue me.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •