Forum: Compiler & IDEs Umwandeln HEX in Binärzahl


von HerrmannA (Gast)


Lesenswert?

ICh muß einen HEX-Wert 0x0c in Binär umwandeln

gibt es da wie bei bascom fertige funktionen???

von Frank (Gast)


Lesenswert?

gibts bestimmt wenn du kundtätest womit du es denn nun programmieren
willst. Ansonsten nutz doch Bascom.

bye

Frank

von Thomas (Gast)


Lesenswert?

1100

von HerrmannA (Gast)


Lesenswert?

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 .

von Jan M. (mueschel)


Lesenswert?

Wie meinst du das? Die Funktion erhält einen String der Form "0xF7"
und soll einen String der Form "11110111" zurückgeben?

von HerrmannA (Gast)


Lesenswert?

Aslo


char* hex_bin(char* hexwert)
{

Umrechnung?????

return (binwert);
}

von Jan M. (mueschel)


Lesenswert?

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.

von HerrmannA (Gast)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

"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

von Peter D. (peda)


Lesenswert?

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

von johnny.m (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.