Forum: Compiler & IDEs 16Bit Zahl zu String


von T.M. (Gast)


Lesenswert?

Hallo,

Habe das Problem das ich eine uint16_t wert als Zahl in einen String 
wandeln möchte!

Habe wohl schon die sprintf() funktion gefunden allerdings funktioniert 
diese ja nur mit Integer Werten.

von Johannes M. (johnny-m)


Lesenswert?

sprintf funktioniert mit praktisch allen Werten (Typen) und ist 
dementsprechend umfangreich und langsam! In der stdlib.h gibt es einen 
ganzen Haufen spezialisierterer und dementsprechend kleiner und 
schneller Funktiönchen für solche Zwecke. Für einen uint16_t gäbe es 
z.B. utoa...

von T.M. (Gast)


Lesenswert?

krieg ich mit utoa nicht den jeweiligen ASCII code ? und nicht die Zahl 
welche ich will ?

von Karl H. (kbuchegg)


Lesenswert?

T.M. wrote:
> krieg ich mit utoa nicht den jeweiligen ASCII code ? und nicht die Zahl
> welche ich will ?

Wie wärs, wenn du dir einfach mal im Web eine Dokumentation zu utoa 
suchst.

Ist mir sowieso unverständlich, wei man ohne Unterlagen eine 
Programmiersprache benutzen kann. Aber seis drum.

von Tilo (Gast)


Lesenswert?

@Johannes:

Kannst du das mit der stdlib konkretisieren? Ich verwende newlib und bei 
mir gibt es die Funktion utoa nicht.

von Johannes M. (johnny-m)


Lesenswert?

T.M. wrote:
> krieg ich mit utoa nicht den jeweiligen ASCII code ? und nicht die Zahl
> welche ich will ?
Hä? Oben wolltest Du doch die Zahl in einen String wandeln. Und ein 
String besteht im kontextuellen Sprachgebrauch nunmal aus ASCII-Zeichen. 
Was meinst Du denn, was sprintf ausspuckt?

von Karl H. (kbuchegg)


Lesenswert?


von Tilo (Gast)


Lesenswert?

Hm, der ganze Artikel bezieht sich nur auf AVR? Habe ich überlesen, dass 
es hier um AVR speziell geht?

von Karl H. (kbuchegg)


Lesenswert?

Tilo wrote:
> Hm, der ganze Artikel bezieht sich nur auf AVR? Habe ich überlesen, dass
> es hier um AVR speziell geht?

Nein. Der Artikel (zumindest der von mir verlinkte Abschnitt) bezieht 
sich nicht auf AVR im Speziellen, sondern auf die Programmiersprache C 
im Speziellen. Im Artikel sind 3 Methoden angegeben, wie man das 
Gewünschte erreichen kann. 2 davon funktionieren auf jedem noch so 
grindigen C-System (printf/sprintf bzw. eine selbstgemachte 
Ausgabefunktion), während die dritte nur auf ausgewählten C-Systemen 
funktioniert (itoa bzw. utoa), wobei praktisch alle C-Systeme eine 
derartige Funktion anbietet.

Ich kenn zwar die von dir erwähnte newlib nicht, aber ich würde fast 
darauf wetten, dass es eine entsprechende Funktion gibt (die u.U auch 
_utoa heißen könnte) und du nur nicht das richtige Header File hast.

von Johannes M. (johnny-m)


Lesenswert?

Tilo wrote:
> Hm, der ganze Artikel bezieht sich nur auf AVR? Habe ich überlesen, dass
> es hier um AVR speziell geht?
Nein, aber Du hast die Forenregeln nicht beachtet und in Deinem OP 
nicht erwähnt, um was es wirklich geht!

Zitat:
1
Wichtige Regeln - erst lesen, dann posten!
2
3
    [...]
4
    * Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
5
    [...]

von Tilo (Gast)


Lesenswert?

Ich bin nicht T.M.

Mich hat das Thema nur interessiert, weil ich bei der Newlib auf dem 
Stand bin, dass man so eine Funktion selbst schreiben muss und nichts 
dabei ist.
Daher meine Frage.

von T.M. (Gast)


Lesenswert?

cool bleiben ^^

ist dank euch jetzt gelöst werde nächstes mal meiner ersten idee gleich 
nachgehen ;)

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.