Forum: Compiler & IDEs Umrechnung mit u_char in ??


von Stefanie (Gast)


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?

von johnny.m (Gast)


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...

von johnny.m (Gast)


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...

von Stefanie (Gast)


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

von johnny.m (Gast)


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?

von Stefanie (Gast)


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.

von johnny.m (Gast)


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).

von Stefanie (Gast)


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!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.