Kiffliges Problem
-
Jo klar, hab mich nur verschrieben mit dem Double
Habs geschnallt danke auch und schönes Wochenende, der Sommer naht
codeman
-
Nach der Überschrift habe ich schon gedacht es ginge ums kiffen
-
immigrant schrieb:
Nach der Überschrift habe ich schon gedacht es ginge ums kiffen
Hehe, ich konnte mir den Kommentar verkneifen
-
Hopps, ist unfreiwillig ein guter Versprecher geworden
-
Hi,
also ich habs mal mit strtol() probiert. Problem ist, bei mir kommt immer 0 raus.
Steht also in dem String 0x0302 dirn, bekomme ich nicht in dezimal 770, sondern 0.Ich hab keine Ahnung warum das so ist, vielleicht hat jemand ne Idee.
codeman
-
Alles klar habs!!!
Funktion strtol() bricht bei dem x der hexa defination 0x ab und liefert den bis dahin konvertierten Wert, der nun 0 ist. Schade auch das man das nicht so schreiben kann, da nun bei 0302 nicht mehr richtg ersichtlich ist das es sich um einen hexa Wert handelt. Aber thats it
codeman
-
codeman schrieb:
Alles klar habs!!!
Funktion strtol() bricht bei dem x der hexa defination 0x ab und liefert den bis dahin konvertierten Wert, der nun 0 ist. Schade auch das man das nicht so schreiben kann, da nun bei 0302 nicht mehr richtg ersichtlich ist das es sich um einen hexa Wert handelt. Aber thats it
codeman
Da sagt die manpage (man: strtol) aber was anderes.
strtol(foo,NULL,0);
Sollte eigentlich funktionieren...
-
The remainder of the string is converted to a long, long long, or
intmax_t, value in the obvious manner, stopping at the first character
which is not a valid digit in the given base. (In bases above 10, the
letter `A' in either upper or lower case represents 10, `B' represents
11, and so forth, with `Z' representing 35.)Scheint so zu sein, dass bei 0x das x als 33 interpretiert wird, wäre aber leider auch nicht richtig. Es soll ja lediglich den Wert als Hexa markieren, bzw. in Ansi schreibweise macht man es halt so.
Aber wenn du mir ein Beispiel bringen könntest wäre nett, denn ich würde es schon gerne einbauen.
Edit: Hab das gefunden
Für das Duale Zahlensystem sind die Zeichen 0 und 1 gültig, für das Zehnerzahlensystem die Zeichen 0 bis 9 und für das hexadezimale Zahlensystem dürfen Zeichen 0 bis 9 und A bis F verwendet werden.
Steht hier: http://www.goblack.de/desy/sc12chip/c/bibliothek/strtol.html
codeman
-
If base is zero or 16, the string may then include a `0x' prefix, and the number will be read in base 16;
test = strtol("0x0302",NULL,0); // funktioniert wunderbar
-
Ja haut einwandfrei hin!!!
Ich hatte noch netterweise einen Debuger laufen, und so hat das makefile das ausführbare cgi-script nicht neu überschrieben.
Manchmal kann eine ein Debug ein Segen, manchmal auch ein Fluch sein
Dank dir für deine Mühen,
codeman