mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik long zu ascii - ARM7


Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine Frage:

Wenn ich im Speicher eine long-Zahl habe, zb 123456 und ich will diese 
in einen String konvertieren, wie mache ich das?

Im Voraus danke für eine Antwort!!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In C:

itoa oder (s)printf

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, ich muss die Funktion in Assembler für ARM7 realisieren!
Danke!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hättest Du auch gleich schreiben können. Das Grundkonzept ist immer 
dasselbe, ob nun ein 8-Bit-Prozessor oder ein 32-Bit-Prozessor verwendet 
wird, daher solltest Du das Funktionsprinzip hier im Forum beschrieben 
finden - ist ja nicht so, daß die Frage das erste Mal gestellt würde.

Achja, und was bitte hat das mit "PC-Programmierung" zu tun?

Nichts, also -> verschoben.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gast wrote:
> Nein, ich muss die Funktion in Assembler für ARM7 realisieren!
> Danke!


Die Zahl sei 3587

Wieviele Tausender sind in 3587?

  3587 - 1000 = 2587          1 mal
  2587 - 1000 = 1587          2 mal
  1587 - 1000 =  587          3 mal
   587 - 1000 = -413     negativ, ergo  sind 3 Tausender enthalten

Wiviele Hunderter sind in 587

   587 - 100 = 487            1 mal
   487 - 100 = 387            2 mal
   387 - 100 = 287            3 mal
   287 - 100 = 187            4 mal
   187 - 100 =  87            5 mal
    87 - 100 = -13       negativ, ergo sind 5 Hunderter enthalten

Wieviele Zehner

    87 - 10 = 77              1 mal
    77 - 10 = 67              2 mal
    67 - 10 = 57              3 mal
    ...
    27 - 10 = 17              7 mal
    17 - 10 =  7              8 mal
     7 - 10 = -3         negativ, ergo sind 8 Zehner

Wieviele Einer sind in 7

  Einfach, das sind 7

Wie wissen also, dass in 3587 enthalten sind
3 Tausender, 5 Hunderter, 8 Zeher und 7 Einer.
Das sollte doch jetzt kein Problem mehr sein, einen String
mit den entsprechenden ASCII Zeichen zu füllen.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rufus:
"itoa oder (s)printf"


long zu String und dann itoa? Nee, ist klar.
ltoa ist Dein Freund...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier wird das Grundprinzip gezeigt.

AVR-Tutorial: ADC

Mfg
Falk

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es einen vernünftigen Grund sowas in Assembler neu zu programmieren 
?

Der einzge Grund der mir einfällt ist, das ein Prof. an der Uni, Fh, 
oder ähnliches das als Übungsaufgabe stellt.
Und dan lös es selbst, wenn du eine Lösung abschreibst lernst du es 
nicht.
Geht spätestens bei der Klausur in die sch.....

Autor: let (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Gibt es einen vernünftigen Grund sowas in Assembler neu zu
>programmieren ?

Nun, der GNUARM z.B. kennt kein itoa. Und wenn eine Implementierung in C
zu langsam ist...

Den Ansatz von Herrn Buchegger habe ich mal auf einem AVR umgesetzt.
Das ist deutlich schneller als das übliche Verfahren mit div/modulo.

Autor: Ralph Broeder (ralph-b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
/Und wenn eine Implementierung in C zu langsam ist.../

Die paar µS unterschied zwischen der C und der Assembler Implementierung 
auf einem ARM 7 wirst du nie merken.
Wenn dein µC deshalb zu langsam ist, dann hast du etwas grundlegendes 
falsch gemacht.
==> Falscher µC ausgewählt
Benötigte und Vorhanden Resourcen passen nicht zusammen
Das kommt von erst mal Anfangen, ohne zu wissen was man macht.

Autor: let (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Amen

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> "itoa oder (s)printf"
>
> long zu String und dann itoa? Nee, ist klar.
> ltoa ist Dein Freund...

Sorry, da war ich etwas unaufmerksam. Auf den meisten Systemen, auf 
denen ich unterwegs bin ist sizeof (int) == sizeof (long).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.