Hexadezimal-und Binärcode

Kann mir jemand sagen, wie ich Buchstaben und Zahlen in Hexadezimal- und Binärcode umwandeln kann?
Gruss Daniel

Kann mir jemand sagen, wie ich Buchstaben und Zahlen in
Hexadezimal- und Binärcode umwandeln kann?
Gruss Daniel

Ganz einfach: Jedes ASCII-Zeichen hat eine ihr eindeutig zugewiesene Positionsnummer. Das erste sichtbare Zeichen
ist an Pos. 32 und ist das Leerzeichen (Space). Das große
A hat die 65. Das kann man in einer ASCII-Tabelle nachsehen.
Jetzt nimmst du diese Dezimalzahl und wandelst sie in
Hexadezimal um. Du weisst doch wie das geht?
Genauso macht man das auch mit binär. Solche typischen
Informatiksachen findet man bestimmt überall im Internet.

Einen Algorithmus kann habe ich gerade nicht zur Hand und auch keine Zeit, sowas auf die schnelle hinzuschreiben.
Nur soviel noch:

Dez. / 16 -> ganze Zahl in Buchstaben A bis F umwandeln
Dez mod 16 -> dito

Dez. & 1 = 1 -> 1
Dez. & 1 = 0 -> 0
Das ganze als String

Franz

Hi.

Kann mir jemand sagen, wie ich Buchstaben und Zahlen in
Hexadezimal- und Binärcode umwandeln kann?

Buchstaben werden durch Zahlen repräsentiert. Unter DOS war das noch ein Byte pro Buchstabe. Desswegen auch die Beschränkung von Zeichensätzen auf 256 verschiedene Symbole.

Heutzutage kommen immer mehr UniCode-Zeichensätze auf, die auch mehrere Zeichen unterstützen.

Unter Basic ging die Umwandlung von Zeichen zu Zahlen (und umgekehrt) so:

Zahl = asc(‚A‘)
Buchstabe = chr(64)

Die Befehle lauten in den verschiedensten Programmiersprachen aber ziemlich ähnlich. Du dürftest kein Problem haben, wenn du in der jeweiligen Hilfe nach ASCII suchst.

Was die Umrechnung einer Zahl vom Dezimalsystem ins Binäre oder Hexadezimale angeht, zuerst eine kleine Tabelle, die die ersten 16 Zahlen in den verschiedenen Systemen vergleicht:

(00)<sub>10</sub> = (00000)<sub>2</sub> = (00)<sub>16</sub>
(01)<sub>10</sub> = (00001)<sub>2</sub> = (01)<sub>16</sub>
(02)<sub>10</sub> = (00010)<sub>2</sub> = (02)<sub>16</sub>
(03)<sub>10</sub> = (00011)<sub>2</sub> = (03)<sub>16</sub>
(04)<sub>10</sub> = (00100)<sub>2</sub> = (04)<sub>16</sub>
(05)<sub>10</sub> = (00101)<sub>2</sub> = (05)<sub>16</sub>
(06)<sub>10</sub> = (00110)<sub>2</sub> = (06)<sub>16</sub>
(07)<sub>10</sub> = (00111)<sub>2</sub> = (07)<sub>16</sub>
(08)<sub>10</sub> = (01000)<sub>2</sub> = (08)<sub>16</sub>
(09)<sub>10</sub> = (01001)<sub>2</sub> = (09)<sub>16</sub>
(10)<sub>10</sub> = (01010)<sub>2</sub> = (0A)<sub>16</sub>
(11)<sub>10</sub> = (01011)<sub>2</sub> = (0B)<sub>16</sub>
(12)<sub>10</sub> = (01100)<sub>2</sub> = (0C)<sub>16</sub>
(13)<sub>10</sub> = (01101)<sub>2</sub> = (0D)<sub>16</sub>
(14)<sub>10</sub> = (01110)<sub>2</sub> = (0E)<sub>16</sub>
(15)<sub>10</sub> = (01111)<sub>2</sub> = (0F)<sub>16</sub>
(16)<sub>10</sub> = (10000)<sub>2</sub> = (10)<sub>16</sub>

=> Das Dezimalsystem besteht aus (0,1,2,3,4,5,6,7,8,9,0)
=> Das Binärsystem besteht aus (0,1)
=> Das Hexadezimalsystem besteht aus (0,…,9,A,B,C,D,E,F)

Es gibt einen normalen und einen einfachen Algorithmus, mit denen man an die Zahlenwerte der anderen Basen gelangt. Ich werde mal nur den einfachen Weg zeigen:

Ich habe eine Zahl im Dezimalsystem z.B. (123)10

Jetzt nehme ich mir alle Potenzen von 2 und 16
20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128 … diese Zahl brauchen wir nicht mehr

16<sup>0</sup> = 1
16<sup>1</sup> = 16
16<sup>2</sup> = 256 ... diese Zahl ist auch größer 123

Jetzt kommt die eigentliche Umrechnung, die eigentlich nur Multiplikation bzw. Division und Addition bzw. Subtraktion enthält:

123 = **1** \* 64 + 59
 59 = **1** \* 32 + 27
 27 = **1** \* 16 + 11
 11 = **1** \* 8 + 3
 3 = **0** \* 4 + 3
 3 = **1** \* 2 + 1
 1 = **1** \* 1 + 0 

Die binäre repräsentation wäre also:

(123)<sub>10</sub> = (1111011)<sub>2</sub>

Analog die Umrechnung in Hexadezimal:

123 = **7** \* 16 + 11
 11 = **11** \* 1 + 0

Da im Hexadezimalen das Symbol B für die Zahl 11 steht, schaut das Ergebnis so aus:

(123)<sub>10</sub> = (7B)<sub>16</sub>

Anhand der Berechnung oben lässt sich ganz einfach ein Algorithmus herleiten.

mfG,

J.P.Jarolim