Forum: Mikrocontroller und Digitale Elektronik long in char Wert umwandeln


von Frank Polle (Gast)


Lesenswert?

Hallo !

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

Mfg Frank

von crazy horse (Gast)


Lesenswert?

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

von Frank Polle (Gast)


Lesenswert?

Aha und beim Integer, dann die oberen zwei Byte, oder wie?

von Ingbert Grimpe (Gast)


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 ...

von crazy horse (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.