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?
> 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...
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...
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
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?
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.
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).
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.