Forum: PC-Programmierung convertierung char hexwert zu int dezimalwert


von frank (Gast)


Lesenswert?

Hallo zusammen,

nach langen versuchen, begebe ich mich wieder zu euch!
ich versuche ein char hex wert in int als dezimalwert zu konvertieren 
und habe keine erfolg ):

hier mein code
1
char char_array[] = {A,B,D,0x18,P,0x2D}
2
int a;
3
4
for(int i=0; i<sizeof(char_array);i++)
5
a = atoi(&char_array[i]);
6
7
// a liefert immer 0 (null)
8
// ich erwarte dezimalwert in a:
9
// a = 65, dann a=66, dann a=68, dann a=24 dann a= 80 dann a=45...

sieht jemand was ich falsch mache?
wie sieht die richtige lösung aus?

danke im voraus!

von Peter II (Gast)


Lesenswert?

frank schrieb:
> ich versuche ein char hex wert in int als dezimalwert zu konvertieren

wie bekommt du den in ein char ein hex wert?

char char_array[] = {A,B,D,0x18,P,0x2D}

soll etwas A ein hexwert sein? Hex schreibt man immer noch mit 0xA. Ein 
P gibt es in hex auch nicht.

von frank (Gast)


Lesenswert?

Peter, bitte lass es.

von Karl H. (kbuchegg)


Lesenswert?

Stell eine ordentliche Frage, mit ordentlichem Code, dann braucht man 
dich auch nicht darauf hinweisen, dass deine Frage im Kontext dieses 
Codes dämlich ist.

Selbst mit viel Wohlwollen und alle Augen zugedrückt, kann ich deine 
Frage auf mindestens 3 verschiedene Arten interpretieren.

von Gelöscht (kami89)


Lesenswert?

so geht das nicht.

Erstens werden Chars mit Hochkomma geschrieben:
1
char char_array[] = {'A','B','D',0x18,'P',0x2D}

Und zweitens solltest du mal nachschauen was atoi genau macht und ob das 
für deine Anwendung geeignet ist.

>Peter, bitte lass es.
?!?!

von frank (Gast)


Lesenswert?

@Buchegger,
Frage: wie bekomme ich den Hexwert, der in char gespeichert ist, z.b. 
0x41 was in ASCII 'A' entpricht in dezimalwert konwertiert? ich möchte 
aus char 0x41 (hex) den Dezimalwert 65.

@Urban
1
 char char_array[] = {'A','B','D',0x18,'P',0x2D}

das ist richtig was du sagst. Zeichen gehören in Hochkomma.

ich leses über atio:
"On success, the function returns the converted integral number as an 
int value. If no valid conversion could be performed, a zero value is 
returned."

Ich bekommen immer Null, daher meine Frage warum wohl die Konversion 
ungültig ist, Nullterminierung, habe ich probiert, kein Erfolg.

>>Peter, bitte lass es.
>?!?!

wie Buchegger sagt, auf dämliche Frage kam dämliche Antwort gefolgt von 
dämlichen Komentar meinerseits :)

von Peter II (Gast)


Lesenswert?

frank schrieb:
> ich möchte
>
> aus char 0x41 (hex) den Dezimalwert 65.
> char char_array[] = {'A','B','D',0x18,'P',0x2D}

hast du überhaupt eine ahnung was in der array steht?

lass dich mal von printf("%d", char_array[0]) überraschen.

von frank (Gast)


Lesenswert?

Peter II, glaub mir, im char[0] steht 0x41. im char[1] steht 0x42.
Keine Überraschung... ich wollte eben den Hexwert in dezimal wandeln und 
im integer speichern. Tut mir leid, dass die Hochkomma vergessen worden 
sind... Ich kann sehr wohl unterscheiden was ein char und int ist und 
was drin steht. Ich danke dir dass du mir darauf hingewisen hast. Hast 
du vll. eine Idee wie ich die Aufgabe elegant lösen kann?

von Peter II (Gast)


Lesenswert?

frank schrieb:
> Peter II, glaub mir, im char[0] steht 0x41. im char[1] steht 0x42.
> Keine Überraschung...
du solltest dich nicht so weit rauslehnen. Das steht genauso 'A' wie 65 
drin. - das ist nur eine frage der anzeige!

dein compiler ist hex und decimal ziemlich egal!!!!

char char_array[] = {'A','B','D',0x18,'P',0x2D}
int a = char_array[0];

von frank (Gast)


Lesenswert?

Peter II vielen dank für die unterstützung!
Du bist wie Mr. Wolf aus Pulp Fiction!

die lösung ist einfacher wie ich dachte
1
int a = char_array[0];

Ich war verwirrt durch hin und her...

von Peter II (Gast)


Lesenswert?

frank schrieb:
> die lösung ist einfacher wie ich dachte

ja weil dir nicht klar ist was wirklich in dem array steht. Dort stehen 
schon zahlen drin. Dabei stehen sie weder hex noch decimal drin, sondern 
binär.

von frank (Gast)


Lesenswert?

gut... damit du dich zelebrieren kannst hier die Frage:

was ist binär?

von Gelöscht (kami89)


Lesenswert?

frank schrieb:
>
1
 char char_array[] = {'A','B','D',0x18,'P',0x2D}
>
> das ist richtig was du sagst. Zeichen gehören in Hochkomma.
Dann schreib das bitte auch so! Wie sollen wir bei der Fehlersuche 
helfen wenn dein geposteter Code nicht mit deinem verwendeten Code 
übereinstimmt?

> ich leses über atio:
> "On success, the function returns the converted integral number as an
> int value. If no valid conversion could be performed, a zero value is
> returned."
>
> Ich bekommen immer Null, daher meine Frage warum wohl die Konversion
> ungültig ist, Nullterminierung, habe ich probiert, kein Erfolg.
Bei so einem Fall sucht man doch erstmal weiter in Büchern/Internet usw. 
nach irgendwelchen Code-Beispielen. Dabei wäre dir aufgefallen, dass du 
die Beschreibung falsch interpretierst. Nach ca. 5 Minuten Recherche 
hättest du gemerkt, dass atoi() verwendet wird um eine Zahl, die als 
String vorliegt ("12345") in ein Integer umzuwandeln (12345). Und jetzt 
rate mal, warum du bei atoi("ABC") eine Null als Ergebnis bekommst...

mfg

von frank (Gast)


Lesenswert?

>Bei so einem Fall sucht man doch erstmal weiter in Büchern/Internet usw.
Ich frag lieber nach, du schreibst doch ehe gleich zurück.

>Nach ca. 5 Minuten Recherche
>hättest du gemerkt, dass atoi() verwendet wird um eine Zahl, die als
>String vorliegt ("12345") in ein Integer umzuwandeln (12345).

Kann man auch normal im ersten Post sagen. Ohne Bosheit. Ich frage wann 
und wo ich will nach, ist das ein Verbrechen? Ihr seit schon so ein 
Völkchen hier, hauptsache drauflos pöbeln.

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.