Forum: Mikrocontroller und Digitale Elektronik Wo findet die Umrechnung Buchstabe -> Hex statt?


von Absoluter Beginner (Gast)


Lesenswert?

Hallo

Mich würde interessieren wo die Umrechnung von Buchstaben in Hex Werte 
stattfindet.

Ich kann ja beispielsweise über UART den Wert 'A' verschicken, dann wird 
der Hex Wert 0x41 übertragen.
Nimmt der Compiler diese Umrechnung vor? Oder ist das einfach 
bestandteil der Programmiersprache C oder wie?

von David M. (md2k7)


Lesenswert?

Das Zeichen ist bereits in deinem Quelltext als Zahl codiert - ein PC 
"kennt" in dem Sinn gar keine Buchstaben. Der Compiler übernimmt diesen 
Code einfach nur.

von Absoluter Beginner (Gast)


Lesenswert?

Aber wo genau passiert diese Umrechnung?

Ich gebe 'A' ein und der Compiler weiß "aha, 0x41".

von David M. (md2k7)


Lesenswert?

diese Umrechnung passiert in dem Moment, wo du die Taste auf der 
Tastatur drückst.

von Johannes M. (johnny-m)


Lesenswert?

Es gibt keine "Umrechnung" in dem Sinne.

'A' ist nur eine andere Schreibweise für 0x41. Genausogut könnte man 65, 
0101 oder (bei manchen Compilern) 0b01000001 schreiben. Nur ist das für 
die meisten Menschen etwas schwerer lesbar. Der Compiler interpretiert 
ein in Hochkommata eingeschlossenes Zeichen als ASCII-Character. Intern 
arbeitet der Compiler eh nur mit Binärwerten, denn etwas anderes 
versteht die Maschine (Zielsystem) eh nicht.

von Rolf Magnus (Gast)


Lesenswert?

Der Computer kennt weder Buchstaben, noch Hex-Werte. Er kann nur 
Bit-Patterns speichern und damit im Dual-System rechnen. Alles andere 
sind nur verschiedene Bedeutungen, die der Programmierer diesen 
Bit-Patterns zuordnet. Das sind dann "Codes".
So wird dann vom Editor das Bit-Pattern 1000001 gespeichert, wenn du auf 
das 'A' drückst. Der Compiler macht dann ggf. eine 
Zeichensatz-Konvertierung vom Quellcode-Zeichensatz in den Zeichensatz 
des Zielsystems, die sich ja auch unterscheiden können. Ein Hex-Wert 
wird daraus dann erst beim Anzeigen in dem Programm, mit dem du den Wert 
empfängst. Hier wird da Pattern dann als Dualzahl interpretiert und zur 
übersichtlicheren Darstellung dann nach Hexadezimal konvertiert.

von tastendrücker (Gast)


Lesenswert?

Oder anders gesagt: Das 'A' siehst Du nur in deinem Editor, weil der 
natürlich für 'menschliche' Ein-/Ausgaben gemacht ist. 'A' ist sozusagen 
nur eine für Menschen einfachere Darstellung von '1000001'.

von Matthias L. (Gast)


Lesenswert?

>denn etwas anderes versteht die Maschine (Zielsystem) eh nicht.

Genau. Deshalb haben ja gute Programmierung keinen Puls, sondern einen 
(selbst) einen Takt ;-)

von tastendrücker (Gast)


Lesenswert?

> Deshalb haben ja gute Programmierung keinen Puls, sondern einen
> (selbst) einen Takt ;-)


ähhh, wie meinen?

von Johannes M. (johnny-m)


Lesenswert?

Matthias Lipinsky wrote:
> Genau. Deshalb haben ja gute Programmierung keinen Puls, sondern einen
> (selbst) einen Takt ;-)
Genau... Ich auch gutes Programmierung und ich Takt...

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Ich denke mal er meint:

"Genau. Deshalb haben gute Programmierer ja keinen Puls, sondern 
(selbst) einen Takt ;-)"

grins


Wie ein Mobile :-)
Taktfrequenzen zwischen ~1Hz - ~10Hz :-) (wenn ich mich jetzt nicht 
irre, nur geschätzt)


VG,
/r.

von Rolf Magnus (Gast)


Lesenswert?

> Wie ein Mobile :-)

??

> Taktfrequenzen zwischen ~1Hz - ~10Hz :-) (wenn ich mich jetzt nicht
> irre, nur geschätzt)

Wenn dein Puls bis 10Hz hoch geht, hast du ein Problem.

von Gregor B. (gregor54321)


Lesenswert?

Diese "Umrechnungstabelle" ist hinterlegt:
http://de.wikipedia.org/wiki/Ascii#Zusammensetzung

von Maximilian B. (sexymaxy)


Lesenswert?

Wenn sein Puls 10 Hz hat, dann hat er kein Problem zumindest besteht 
sein Problem nicht emhr lange :D

von OliverSo (Gast)


Lesenswert?

>Aber wo genau passiert diese Umrechnung?
>Ich gebe 'A' ein und der Compiler weiß "aha, 0x41".

Da finden zwar Umrechnungen statt, aber davon bekommt der Compiler 
nichts mit.
Stark vereinfacht passiert etwa folgends:
Wenn du bei geöffnetem Editor die Taste 'A' drückst, wandeln Treiber und 
Betriebssystem diesen Tastendruck in ein Byte mit dem Hexwert 0x41 um, 
und der wiederum veranlasst deinen Editor (weil es ein Texteditor ist), 
den Buchstaben A anzuzeigen. Die Zurodnung machen Betriebsystem und 
Editor über die o.a. ASCII-Tabelle. Intern ist das aber immer nur ein 
Byte mit dem Bitmuster 01000001 (=0x41).

Der Compiler bekommt von all dem gar nichts mit. Der liest byte für byte 
die Eingabedatei, und die besteht nur aus einzelnen Bytes mit jeweils 8 
bit. Was diese 8 bit jetzt bedeuten, muß der Compiler aus dem 
Zusammenhang erkennen, und das macht er über die Sprachdefinition der 
Programiersprache. Ein C-Compiler z.B. "weiss", wenn er die Bytefolge 
00100111 01000001 00100111 (0x27 0x41 0x27) findet, daß das mittlere der 
drei Bytes als Buchstabenkonstante nach ASCII-Tabelle zu interpretieren 
ist. Ein Editor würde die drei Bytes als 'A' anzeigen.

Oliver

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.