Hallo, ich versuche einen Array von chars(z.B.: x = ['A', 'B', 'C', '1', 'F', 'F']) in eine die Äquivalente Dezimalzahl umzuwandeln. Also F soll später 16 sein, B soll 11 sein usw.. atoi und der gleichen hilf mir ja nicht weiter, denn die geben mir nur die ASCII hex zahl z.B.: F ist dann 41, was nicht so soll. Welche Methode gibt es dafür?
Gast
#3599606
Wie wärs mit if?
... Und einem scharfen Blick in die ASCII-Tabelle... Oliver
Thx ngc5907! Oliver S. schrieb: > ... Und einem scharfen Blick in die ASCII-Tabelle... Ja ich weiß hab mich verlesen natürlich ist F 46.......
Gast
#3599644
Glenn Rathke schrieb: > atoi und der gleichen hilf mir ja > nicht weiter, denn die geben mir nur die ASCII hex zahl z.B.: F ist dann > 41, was nicht so soll falsch, atoi wandelt eine ASCII STring in eine Zahl, 'F' '\0' wird also mitnichten in 41 (oder 46) gewandelt
Glenn Rathke schrieb: > Ja ich weiß hab mich verlesen natürlich ist F 46....... Das auch. Durch mehrstündiges scharfes Nachdenken könntest du aber auch herausfinden, wie man nun vom ASCII-Wert 46 auf den gewünschten Wert 16 kommt. Oliver
Gast
#3599811
Oliver S. schrieb: > auf den gewünschten Wert 16 > kommt. 'F' ist 15 und nicht 16.
Gast
#3600690
Wie waers mit:
1 | |
2 | |
3 | |
dann bekommste fuer x = { 'A', 'B', ...}: fn('A') == 0, bzw fn(x[0]) ==
0...
Gast
#3600801
Glenn Rathke schrieb: > atoi und der gleichen hilf mir ja > nicht weiter, denn die geben mir nur die ASCII hex zahl z.B.: F ist dann > 41, was nicht so soll. Um welche Programmiersprache geht es denn dabei?
DirkB schrieb: > Um welche Programmiersprache geht es denn dabei? Da der Thread im "GCC" Forum ist vermutlich C. In C würde ich es so machen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Wenn du dir eine ASCII-Tabelle ansiehst kannst du den Code vllt. nachvollziehen: http://neubert-volmar.de/Omega/Handbuch/ASCII-Tabelle.bmp
Max H. schrieb: > zahl=character-'A'; //oder zahl=character-'a'; wenn du mit > Kleinbuchstaben arbeitest Groß und Kleinbuchstaben unterscheiden sich nur durch ein Bit. Mit 0x20 "verodern" und man hat immer Kleinbuchstaben
Jürgen D. schrieb: > Groß und Kleinbuchstaben unterscheiden sich nur durch ein Bit. > Mit 0x20 "verodern" und man hat immer Kleinbuchstaben Wusste ich noch nicht, habe mich noch nie so sehr mit ASCII beschäftigt. Werd ich mir merken, Danke :-) Der Code würde dann so aussehen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Max H. schrieb: > Jürgen D. schrieb: >> Groß und Kleinbuchstaben unterscheiden sich nur durch ein Bit. >> Mit 0x20 "verodern" und man hat immer Kleinbuchstaben > Wusste ich noch nicht, habe mich noch nie so sehr mit ASCII beschäftigt. > Werd ich mir merken, Danke :-) > > Der Code würde dann so aussehen: >
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
Fast. Ich würde im Buchstabenfall noch 10 addieren. Denn sonst liefern '0' und 'A' das gleiche Ergebnis.
1 | |
Gast
#3600878
Max H. schrieb: > DirkB schrieb: >> Um welche Programmiersprache geht es denn dabei? > Da der Thread im "GCC" Forum ist vermutlich C. Dazu passt irgendwie nicht die Angabe des Arrays mit den [] (x = ['A', 'B', 'C', '1', 'F', 'F']) und dass merkwürdige Verhalten von atoi.
Karl Heinz schrieb: > Ich würde im Buchstabenfall noch 10 addieren. Dummer Fehler :-(
Ich würde einige Standardfunktionen aus ctype.h verwenden, ist meiner Meinung nach übersichtlicher. Zusätzlich würde ich die Funktion gegen falsche Übergabewerte absichern. Sowas in der Art (ungetestet):
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.