www.mikrocontroller.net

Forum: Compiler & IDEs Umrechnung mit u_char in ??


Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe 2 Variable:
u_char temp[1], temp[2];

nun möchte ich in meine 2 Ergebnisvariablen:
u_char ergebnis[1], ergebnis[2];

Jeweils die ersten 4 bit von temp[1] und temp[2] in ergebnis[1] und
die letzten 4 bit von temp[1] und temp[2] in ergebnis[2] kopieren.

Wie kann ich das machen?

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> u_char temp[1]...
Was soll das sein? Ein Array mit nur einer Komponente? Dann kannste das
[1] auch weglassen. Ansonsten verstehe ich Deine Fragestellung irgendwie
nicht ganz. Scheint ein wenig konfus...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahh, ich glaub mir dämmerts so langsam. Du hast anscheinend ein Problem
mit der Syntax von Variablendeklarationen.

Zunächst mal: mit "typ name[n];" deklarierst Du ein Array von n
Komponenten des Typs "typ".

Vermutung: Was Du anscheinend willst, sind zwei Arrays mit jeweils zwei
Komponenten, von denen die eine Komponente des Arrays "ergebnis" die
High-Nibbles und die zweite die Low-Nibbles der Ausgangswerte enthalten
soll.

Du brauchst also zwei Arrays mit je zwei Komponenten:

u_char temp[2], ergebnis[2];

ergbnis[0] bekommt jetzt die High-Nibbles von temp[0] und temp[1]
zugewiesen:

ergebnis[0] = (temp[1] & 0xF0) | (temp[0] >> 4);

jetzt steht im High-Nibble von ergebnis[0] das High-Nibble von temp[1]
und im Low-Nibble von ergebnis[0] das High-Nibble von temp[0]. Wenn Du
das verstanden hast, sollte es kein Problem mehr für Dich sein, den
zweiten Teil selber zu programmieren...

Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Variable vom Typ u_char hat doch 8bit
z.B.
temp[1]=01101110
temp[2]=00010001

--> ergebnis[1]= 1111;  und   ergebnis[2]=0111;

die Indizes sind natürlich sinnlos!

Hoffe, dass man mich nun versteht

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1.: Die Indizes sind so, wie sie von Dir verwendet werden, nicht
sinnlos, sondern falsch!

2.: Da es keine 4-Bit-Variablen gibt, wirst Du um 8 Bit nicht
herumkommen.

3.: Du willst also jeweils die Summe der Nibbles bilden?

Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, vielleicht drücke ich mich ja wirklich total unklar aus.
Ich möchte eigentlich einfach nur von einer u_char Variablen die Bits
7...4 und 4...3 seperat ansprechen.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was heißt jetzt wieder "ansprechen"? Das was Du oben geschrieben
hast...

> temp[1]=01101110
> temp[2]=00010001

> --> ergebnis[1]= 1111;  und   ergebnis[2]=0111;

...deutet darauf hin, dass Du eine Summe oder eine Veroderung machen
willst.

Auf bestimmte Bits zugreifen kann man durch Maskierung (also eben z.B.,
indem man die nicht benötigten Bits ausblendet). Das wäre das, was ich
oben beschrieben habe (z.B. temp[1] & 0xF0 um das High-Nibble zu
isolieren).

Autor: Stefanie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@johnny.m

Super! Vielen Dank, ich habe deinen Beitrag um 18:11 nicht gesehen, da
ich da grad selbst geschrieben hab und danach war nicht mehr
hochgescrollt habe. Ja, so hab ich es gemeint. Vielen Dank!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.