-         

Ergebnis 1 bis 3 von 3

Thema: 16bit Variable in High- und Low-Bytes zerlegen?

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.05.2004
    Ort
    N Stück rechts von Hamburg
    Alter
    28
    Beiträge
    166

    16bit Variable in High- und Low-Bytes zerlegen?

    Anzeige

    Hallo,
    Ich habe gerade folgendes Problem:
    Code:
    void MeineFunktion(unsigned short Addr) {
    typedef struct{
      unsigned char high;
      unsigned char low;
      } uint16;
    AndereFunktion(((uint16) Addr).high);
    AndereFunktion(((uint16) Addr).low);
    }
    Ich möchte den 16bit-Parameter in H- und L- Byte zerlegen und habe dazu versucht, das Ganze in eine Struktur aus 2 Bytes umzuwandeln.
    1) Muss in der Struktur high oder low am Anfang stehen (Big oder Little Endian?)
    2) error: conversion to non-scalar type requested... Scheint gar nicht zu funktionieren. gibt es Alternativen?
    Schonmal Danke für eure Hilfe
    mfG

    cht

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2004
    Ort
    Karlsruhe
    Beiträge
    223
    warum machst du einen typecast nach uint16 von addr? du willst doch das Element high (resp. low) von addr ansprechen, also addr.high resp. addr.low -- die sind unsigned char und das ist ja 8 bit (also uint.
    Wie stellst du dir die Umwandlung vor? Genaugenommen brauchst du da schon ne Funktion für ...
    Warum heißt dein struct eingentlich uint16? Sieht irgenwie komisch aus *grübel*

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    Variablen zerlege ich immer so:

    Code:
    void MeineFunktion(unsigned short Addr)
    {
      unsigned char high, low;
    
      low = Addr & 0xFF;
      high = (Addr >> 8) & 0xFF;
    }

    wobei man das "& 0xFF" eigentlich auch weglassen könnte.
    (schaden tuts aber auch nicht, und ich finds übersichtlicher)
    So viele Treppen und so wenig Zeit!

Berechtigungen

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