mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik long in char Wert umwandeln


Autor: Frank Polle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !

Wie kann ich einen long in char Wert umwandeln?
Was muss ich dafür in C programmieren?

Mfg Frank

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
an sich brauchst du gar nichts machen, einfach zuweisen.
Die oberen 3 Byte werden gnadenlos abgeschnitten.

Autor: Frank Polle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha und beim Integer, dann die oberen zwei Byte, oder wie?

Autor: Ingbert Grimpe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin ja noob, aber fehlen da nicht ein paar Angaben, um die Frage 
sinnvoll beantworten zu können?
- Verwendete CPU (Big oder Little Endian, Architektur)
- Verwendete Programmiersprache

"Einfach zuweisen" mag zwar grundsätzlich klappen (abhängig von 
Programmiersprache), aber ein guter C-Compiler meckert bei so was 
normalerweise (implicit type conversion) und grundsätzlich ist das auch 
eher schlechter "Stil". Im Zweifel sollte man auf jeden Fall 
kommentieren, dass man das absichtlich (!) macht und nicht 
versehentlich. Einfacher und klarer (und im Endergebnis wahrscheinlich 
kein Unterschied) wird es, wenn man explizit konvertiert (castet) und am 
besten noch maskiert. Was der (zB) C-compiler dann daraus optimiert ist 
seine Sache. Aber man möchte seinen eigenen Code ja in ein paar Monaten 
auch noch verstehen ...

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
klar gibt der Compiler ne Warnung, und es tritt ja auch ein 
Informationsverlust ein. Und wenn man sowas schon tut, wirds auch einen 
Sinn/Hintergrund haben.
Big/little-Endian dürfte meiner Meinung nach keine Rolle spielen, das 
macht der Compiler schon richtig.
Solch eine Zuweisung macht schon manchmal Sinn, nach umfangreichen 
Rechnungen mit long kann das Endergebnis durchaus immer in einen 
kleineren Datentyp passen, auch in einen char.
Noch ne kleine Falle: manche Compiler benutzen char erst mal automatisch 
als unsigned.

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.