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
charchar_array[]={A,B,D,0x18,P,0x2D}
2
inta;
3
4
for(inti=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!
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.
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.
@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
charchar_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 :)
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.
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?
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];
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.
>> 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
>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.