Array _schnell_ in String umwandeln
-
Hallo zusammen,
ich suche eine bessere Möglichkeit ein Array aus Integer-Werten mit einem Komma zu versehen und in einen String umzuwandeln.
(Bsp: 1024,128,234,2132,21,23)Hier ein paar Ideen, die ich hatte:
a) simple for-Schleife in der alle Werte mit einem Komma via sprintf in einen temp. Buffer geschrieben werden, der nach jedem Schleifendurchlauf zum String hinzugefügt wird...
b) mehrere Werte mit Kommata dem sprintf übergeben und dann wieder zum String hinzufügen.... (das geht, mit 10 Werten gleichzeitig, schon verdammt schnell)
Aber irgendwie ist mir das nicht elegant genug. Da muss es doch auch eine andere Lösung geben. Das ganze soll auf einer embedded Plattform zum Einsatz kommen. Von daher zählt jede Millisekunde
Jemand ne Idee?
CU AronaDaal
-
Schauen, ob es dafür eine Libraryfunktion gibt. ANSI-C hat sowas nicht, aber manchmal gibts itoa o.ä.. sprintf ist -- vermute ich mal unbedarft -- so langsam, weil es jedesmal den Formatstring parset. Es weiß ja nicht, dass da immer %d drinsteht, und eigentlich nur die interne itoa-Routine aufgerufen werden müsste.
Ansonsten vielleicht selbst schreiben, so schwer ist das nicht, kompliziert wirds erst bei floating-point.
-
sprintf würde ich nicht nehmen. itoa ist nicht standard c. Es wird dir wohl nix anderes übrig bleiben als selber schreiben. Wie bashar schon sagt sollte es nicht schwer sein.
Ich würds so machen:
0) i = 0- wandle die einerstelle in ascii um: buffer[i++] = (zahl % 10) + '0'
- zahl = zahl / 10
- zahl > 0 ? ja: weiter bei 1, nein: weiter bei 4
- drehe den string um
- häng '\0' an
- fertig