ICh muß einen HEX-Wert 0x0c in Binär umwandeln gibt es da wie bei bascom fertige funktionen???
gibts bestimmt wenn du kundtätest womit du es denn nun programmieren willst. Ansonsten nutz doch Bascom. bye Frank
Also ich programmiere in WINAVR mit C Bascomm will ich nicht nutzten. ich muß eine Funktion schreiben die einen HEX wert enthält und einen Binärwert zurückgibt .
Wie meinst du das? Die Funktion erhält einen String der Form "0xF7" und soll einen String der Form "11110111" zurückgeben?
Aslo char* hex_bin(char* hexwert) { Umrechnung????? return (binwert); }
Du solltest dir Gedanken über die Darstellung von Zahlen in Prozessoren und in der Digitalelektronik allgemein machen. Ein Prozessor kann nur eine einzige Darstellung von Zahlen: binär. Ob du in deinem Programm nun 0xF7 oder 247 oder 0b11110111 schreibst, ist völlig egal.
Also ich benötige die Umrechnung für ein GLCD. Dort wird in einer Header Datei die Font abgelegt in HEX. 0xF7 bsp. nun lese ich die Font 0xF7 und muß sie Bitweise untersuchen. bitarray[8]=0xF7 natürlich vorher als binär umgerechnet das ist ja meine frage for (i=0;i<8;i++) { if(bitarray[i]==0) { schreibedaten(forecolor); } else schreibedaten(backcolor); } } das bedeutet ich definiere mir eine Schriftfarbe forcolor=schwarz und eine Hintergrundfarbe =weiss wenn der Bit gesetzt ist schreibt er ein schwarzez Pixel wenn nicht ein Weisses. am ende sieht man ein Zeichen auf dem DSP. deshalb ist es wichtig das ich hex in binär umrechne.
"deshalb ist es wichtig das ich hex in binär umrechne." Das ist Quatsch mit Soße. Ganzzahlen werden in der CPU binär dargestellt. Du kannst sie also nicht "in binär umrechen", weil sie schon binär sind. Du brauchst einfach nur ne Union zu machen aus einem Byte und dem Bitfeld. Allerdings ist bei den meisten Compilern das Rechnen mit Bitfeldene extrem ineffizient. Daher werden Bitfelder sehr selten benutzt und lieber geschoben und maskiert:
1 | unsigned char val, i; |
2 | |
3 | for( i=8; i; i-- ){ |
4 | if( val = 1 ) |
5 | schreibedaten(forecolor); |
6 | else
|
7 | schreibedaten(backcolor); |
8 | val >>= 1; |
9 | }
|
Peter
muß natürlich val&1 heißen:
1 | unsigned char val, i; |
2 | |
3 | for( i=8; i; i-- ){ |
4 | if( val & 1 ) |
5 | schreibedaten(forecolor); |
6 | else
|
7 | schreibedaten(backcolor); |
8 | val >>= 1; |
9 | }
|
Peter
Zur Anregung für den Thread Opener: http://www.mikrocontroller.net/forum/read-1-340388.html Da ist das mit den Zahlendarstellungen schon mal reichlich ausdiskutiert worden (OK, da gehts um Hex und Dezimal-Darstellung, aber wenn mit Hex- und Binärdarstellung schon Probleme auftreten...)
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.