- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 46

Thema: Zahl in Ziffern zerlegen

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.07.2005
    Ort
    127.0.0.1
    Alter
    32
    Beiträge
    824

    Zahl in Ziffern zerlegen

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo

    Wie heisst der Befehl, der eine Zahl in einzelne Ziffern zerlegt? Und wie wird dieser angewendet? Die Zahl ist max. 4 Ziffern lang, sie kann aber auch kleiner sein.

    mfg Luca

    Edit: Dass man nicht den ganzen Thread durchwüllen muss, poste ich hier mal den Code, er ist in Bascom, und man kann damit eine Zahl mit 4 Ziffern in Ziffern zerlegen.

    Code:
    Dim Einer As Word
    Dim Zehner As Word
    Dim Hunderter As Word
    Dim Tausender As Word
    Dim A As Word
    
    A = 8956
    
    Einer = A Mod 10
    A = A - Einer
    A = A / 10
    Zehner = A Mod 10
    A = A - Zehner
    A = A / 10
    Hunderter = A Mod 10
    A = A - Hunderter
    A = A / 10
    Tausender = A Mod 10
    
    
    
    Print tausender         '8
    Print hunderter         '9
    Print zehner             '5
    Print einer                '6
    Sollte ein Bild von mir nicht angezeigt werden, einfach eine PM schicken!

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,

    was willst Du nachher damit machen, wenn Du sie über die UART senden willst, einfach die Variable mit Print ausgeben, da wird sie automatisch gewandelt.

    Ansonsten schaust Dir mal str() an.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.07.2005
    Ort
    127.0.0.1
    Alter
    32
    Beiträge
    824
    Hallo

    Ich muss die Zahl zerlegen, damit ich sie nachher auf 4 Siebensegment (Rndigi)anzeigen, anzeigen lassen kann. Die Zahlen werden per I2C gesendet.

    Wie wird str() angewendet?(Beispiel?)

    Ich hätte die Ziffern dann gerne in variabeln.

    mdg Luca
    Sollte ein Bild von mir nicht angezeigt werden, einfach eine PM schicken!

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    10.03.2005
    Alter
    35
    Beiträge
    967
    In der Bascom Hilfe steht der Befehl eigentlich gut beschrieben. Schau da mal nach. Das Forum liefert dir den Tip und dann muss Eigeninitiative gezeigt werden.
    Ich würde ja gern die Welt verändern..., doch Gott gibt mir den Quellcode nicht!

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.12.2005
    Ort
    @FFM
    Alter
    47
    Beiträge
    408
    ich hab das auch mal mit ner 7 segment gemacht

    einfach die zahl (zb 8763) durch 1000 dann haste die 1.ziffer (
    dann 1.ziffer mal 1000 (=8000) und von deiner zahl abziehen (8763-8000=763)
    nun diese zahl durch 100 (=7) wieder mal 100 (=700) und die von der vorihgen abzihen (763-700=63) nun diese durch 10 und so weiter ...

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Zitat Zitat von molleonair
    ich hab das auch mal mit ner 7 segment gemacht

    einfach die zahl (zb 8763) durch 1000 dann haste die 1.ziffer (
    dann 1.ziffer mal 1000 (=8000) und von deiner zahl abziehen (8763-8000=763)
    nun diese zahl durch 100 (=7) wieder mal 100 (=700) und die von der vorihgen abzihen (763-700=63) nun diese durch 10 und so weiter ...
    Wobei zu beachten ist, das Divisionen und vor allem Kommaberechnungen bei AVR Mikrocontrollern recht lange dauern.

    Einfacher und schneller ist die sogenannte Subtraktionsmethode um aus dieser Zahl die einzelnen Ziffern zu bekommen (Binär -> BCD Wandlung).

    Grüße,
    da Hanni.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.07.2005
    Ort
    127.0.0.1
    Alter
    32
    Beiträge
    824
    Hallo


    An die Hilfe hatte ich nicht gedacht. Diese Funktion wandelt aber einfach z.B. ein Byte zu einem String um oder? Wie aber kann ich den String nun zerlegen?
    Hier ein Beispiel, wie ich die Zahl nachher gerne hätte:

    Code:
     
    A = 1354    'grundwert
    ......           'Befehl
    B = 4          'Zahl 1
    C = 5         'Zahl2
    D = 3         'Zahl3
    E = 1         'Zahl4
    @molleonair
    Als Notlösung währe das möglich, aber dass geht sicher einfacher.

    @Hanni
    Leider verstehe ich bei der Hilfe für BCD nur Banhof.

    mfg Luca
    Sollte ein Bild von mir nicht angezeigt werden, einfach eine PM schicken!

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.11.2005
    Ort
    QTH: JO43BC
    Alter
    56
    Beiträge
    112
    Also ich haette es so spontan gemacht:

    Zunächst die ganze Zahl als String umwandeln:
    Zahl_String= Str(Zahl)


    Laenge des Strings ermitteln:
    LZ = Len(Zahl_String)


    Einzelne Zeichen aus Gesamtstring ermitteln:
    For A = 1 To LZ
    EZ(a) = Mid( Zahl_String, A , 1)
    Next A


    Einzelne Zeichen in numerische Werte umwandeln:
    For A = 1 To LZ
    Ew(a) = val(EZ(a))
    Next A

    Und somit haste die einzelnen Ziffern zur weiteren Verwendung.

    Oder gab's einen direkten Befehl? Keine Ahnung, einfach die Bascom-Hilfe studieren. Da steht alles.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    hui,
    besser gehts in etwa so:

    Code:
    DIM MyString AS STRING * 20
    DIM MyArray(21) AS BYTE AT MyString OVERLAY
    macht nicht soviel arbeit.
    Man muss nur noch schauen wie lange der String wirklich geworden ist, damit man keinen Müll weiterverarbeitet.

    Und daran denken, das die Zahlen als ASCII-Werte dastehen, d.H. 48 abziehen damit die 0 auch 'ne 0 ist !

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied Avatar von DIYLAB
    Registriert seit
    31.10.2004
    Ort
    Berlin
    Beiträge
    156
    Moin,

    A = 1354

    tausender = A / 1000
    tausender = tausender mod 10
    hunderter = A / 100
    hunderter = hunderter mod 10
    zehner = A / 10
    zehner = zehner mod 10
    einer = A mod 10

    In den Variablen tausender, hunderter, zehner und einer stehen dann Deine einzelnen Ziffern.

    Viele Grüße,
    Bruno

Seite 1 von 5 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test