- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Umwandlung: int -> char*

  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    29
    Beiträge
    656

    Umwandlung: int -> char*

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    ich habe eine kleine Frage: Wie kann ich eine Variable vom Typ int in eine des Typs char* umwandeln?

    mfg _R2D2

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    Naja, normale Typumwandlungen gehen grundsätzlich erstmal

    a) automatisch (falls möglich), oder

    b) mit einem expliziten cast, da geht int -> char so: Charvariable = (char)Intvariable


    Aaaaaber...
    bei int nach char* scheint es mir als würdest du etwas anderes beabsichtigen, nämlich eine Zahl in einen Text umzuwandeln, richtig?

    in diesem Fall kann man z.B. printf() verwenden
    So viele Treppen und so wenig Zeit!

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    29
    Beiträge
    656
    Es stimmt, ich möchte eine Zahl in einen Text umwandeln, den ich dann auf einem LCD-Display ausgeben kann.

    Charvariable = (char)Intvariable
    Das habe ich auch schon probiert, aber die Charvariable bekommt dann irgendeinen undefinierten Wert aber nicht meine Zahl zugewiesen.

    in diesem Fall kann man z.B. printf() verwenden
    Wie würde das dann mit printf() funktionieren?

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2005
    Ort
    Braunschweig
    Alter
    47
    Beiträge
    685
    Moin!
    Int nach string geht wunderbar mit itoa()... momentchen... irgendwo hatte ich doch.... ah, jetz ja :
    Code:
    unsigned int wert;
    unsigned char text[7];
    itoa(wert,text,10);
    die Zehn ist die Basis, in dem fall also dezimal, und 'itoa' heißt wohl 'integer to ASCII'.

    Das ein Cast nicht funktioniert, ist eigentlich logisch, wenn man sich mal mit verschiedenen Variablentypen auseinandersetzt, am Ende sind es ja alles bytes, ein Int sind halt 2, ein Char 1 und wenn dein int zufällig '65' wäre und Du es als char behandeln würdest, dann wäre das halt 'A', da die 65 der ASCII Code für das 'A' ist. Alles eine Frage der Interpretation.

    Oder so ähnlich ... .-)

    MfG
    Volker
    Meine kleine Seite
    http://home.arcor.de/volker.klaffehn
    http://vklaffehn.funpic.de/cms
    neuer Avatar, meine geheime Identität

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.12.2004
    Alter
    39
    Beiträge
    165
    Zitat Zitat von vklaffehn
    [...]wenn dein int zufällig '65' wäre und Du es als char behandeln würdest, dann wäre das halt 'A', da die 65 der ASCII Code für das 'A' ist.
    das kann man sich zu Nutze machen wenn man nur einzelne Ziffern umwandeln moechte:

    char ziffer = 7;
    char ascii;
    ascii = ziffer + '0';

    und schon hat man die Ziffer 7 in die ASCII-Darstellung umgewandelt. Umgekehrt gehts natuerlich genauso.

    Mal so nebenbei als Tipp

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    29
    Beiträge
    656
    Ich möchte aber int nach char* nicht nach char umwandeln!

    Wie funktioniert das mit printf()?

    mfg

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    37
    Beiträge
    4.255
    Ich würde itoa empfehlen, wie Volker schon geschrieben hat. printf ist ne ziemlich universelle Funktion, die aber leider auch viel mehr Ressourcen verbraucht als itoa.

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    29
    Beiträge
    656
    Aber mit itoa bekomme ich doch char[] und nicht char* , oder?
    Ich brauche den Wert als Text, um ihn auf einen LCD-Display auszugeben. Dazu stehen mir nur diese Funktionen zur Verfügung,
    Code:
    void lcd_write1(char text)
    {
    	sbi(LCD_PORT, 2);
    	lcd_send(text);
    }
    
    void lcd_write2(char* pText)
    {
    	while(pText[0] != 0)
    	{
    		lcd_write1(pText[0]);
    		pText++;
    	}
    }
    
    void lcd_write3(char* pText, int count)
    {
    	while(count != 0)
    	{
    		lcd_write1(pText[0]);
    		pText++;
    		count--;
    	}
    }
    bei denen ich den Wert als char* brauche. Oder gibt es eine Möglichkeit um zu überprüfen, wie groß das Arrey ist, also wie viele Felder es hat?

  9. #9
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    unsigned char text[7];
    ...
    lcd_write2(text);
    MfG
    Stefan

  10. #10
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    29
    Beiträge
    656
    Wenn das Arrey 7 Felder lang ist und ich z.B.
    Code:
    unsigned int wert; 
    unsigned char text[7]; 
    itoa(wert,text,8); 
    lcd_write2(text);
    schreibe, dann ist doch nur ein Feld im Arrey belegt und die restlichen Felder sind unbelegt. Macht das denn nichts aus? Zeigt mir das Display dann trotzdem nur "8" an?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress