hi leute nach lange rum gucken ist mir folgendes aufgefallen [c] uint32_t memtemp; memtemp=0x1869F; sprintf(buffer, "%6i", memtemp); [c] gibt mir statt 99999 -> 31073 aus. bei 9999 funzt es noch einwandfrei.. mein gedanke war jetzt kann das sein das er nur mit 16 bit arbeiten kann?
Falls das ganze auf einem System mit sizeof(int)=2 (16bit) läuft, dann sollte sprintf(buffer, "%6li", memtemp); das richtige Ergebnis liefern.
%i instruiert sprintf, einen int zu erwarten. Somit wird der übergebene 32-Bit-Wert als 16-Bit-Wert interpretiert (mal angenommen, daß sizeof (int) auf Deinem System 2 ist).
Die Option "i" kennzeichnet einen (signed) int, und der geht nunmal nur von -32768...32767. Schau mal in die Bibliotheksdoku. Du brauchst erstens mal kein "i", sondern ein "u", denn Du möchtest einen vozeichenlosen Wert ausgeben. Außerem muss da zusätzlich noch ein "l" mit rein, damit es ein unsigned long wird... EDIT: Oha, wieder mal viiiel zu lahm...
Hi danke schon mal für die vielen Antworten hab mal folgendes getestet memtemp=99999; sprintf(buffer, "%6ul", memtemp); Ergebnis: 34463 =) was könnte noch falsch sein? sizeof = 2? was ist damit gemeint. bin noch ein Anfänger danke schon mal
Ulf Cramme wrote: > sprintf(buffer, "%6ul", memtemp); > Ergebnis: 34463 Interessant. Müsste so eigentlich 34463l rauskommen. "lu" statt "ul" wäre besser.
danke danke leute hab den Fehler gefunden sprintf(buffer, "%6lu", memtemp); lu ist die Lösung danke =) Bis dann Ulf
Karl heinz Buchegger wrote: > An dieser Stelle > >
1 | > memtemp=0x1869F; |
2 | >
|
> > ist das F nicht so prickelnd. Du willst ganz sicher keine Floating Point > Zahl in ihrer Hex-Repräsentierung angeben. Ist egal, hier zählt F nicht als Float-Endung, sondern als Ziffer. Aber 'L' kann man sehr wohl anhängen.
Ulf Cramme wrote: > =) > was könnte noch falsch sein? avr-gcc mit -mint8 Johann
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.