mikrocontroller.net

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


Autor: Absoluter Beginner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: David Madl (md2k7)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Absoluter Beginner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber wo genau passiert diese Umrechnung?

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

Autor: David Madl (md2k7)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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'.

Autor: Matthias Lipinsky (lippy)
Datum:

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

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

Autor: tastendrücker (Gast)
Datum:

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


ähhh, wie meinen?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gregor B. (gregor54321)
Datum:

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

Autor: Maximilian Bock (sexymaxy)
Datum:

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

Autor: OliverSo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.