Zum Inhalt springen

long in zwei Int umwandeln


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich bin absoluter Neuling beim C Programmieren. Darum wird meine Frage wahrscheinlich lächerlich sein aber ich bekomme es nicht hin.

Ich habe eine Zahl im Format long 16Bit und nun möchte ich daraus zwei Int 8Bit

umwandeln. Sprich in der Variable long h = 0x3D09 und das soll zu int h1=0x3D und int h2=0x09 werden.

Vielen Dank im Voraus!!!

Gruß

Chango

Geschrieben

hallo,

h2 = h;

Soweit ich nicht irre wird hier der Wert einfach automatisch (sprichwörtlich vom generierten Code des Compilers) "abgeschnitten" - man möge mich dahingehend korrigieren wenn ich falsch liege (Klotzkopp? :) )

Welchen Compiler verwendest du? Bei meinem (GCC 4.2.3, Kubuntu 8.04) wird durch diesen Code auf jeden Fall ein fehlerhaftes Ergebnis erzeugt, welches durch ordentliche Bit-Maskierung nicht auftritt.

gruß

mep

Geschrieben
Soweit ich nicht irre wird hier der Wert einfach automatisch (sprichwörtlich vom generierten Code des Compilers) "abgeschnitten" - man möge mich dahingehend korrigieren wenn ich falsch liege (Klotzkopp?

Bei vorzeichenlosen Typen hättest du Recht. Bei vorzeichenbehafteten Typen wie hier ist das "implementation-defined", wie der Standard das nennt. Ich würde das also eher mit unsigned long / unsigned int durchführen, um da auf der sicheren Seite zu sein. Sonst kann es sein, dass je nach Compiler da lustige Dinge mit dem Vorzeichenbit geschehen.

Welchen Compiler verwendest du? Bei meinem (GCC 4.2.3, Kubuntu 8.04) wird durch diesen Code auf jeden Fall ein fehlerhaftes Ergebnis erzeugt, welches durch ordentliche Bit-Maskierung nicht auftritt.
Der Code ist jedenfalls auf einen Compiler zugeschnitten, bei dem long 32 Bit hat, und int 16 Bit.
Geschrieben

Hallo,

ich programmiere mit ImageCraft ICCV7 AVR. Das Programm ist für einen uC und funktioniert soweit. Zumindest in der Simulation.

Wie würdest du maskieren?

h2 = h & 0x00ff;

So oder wird das anderst gemacht. Ich versuch den Code so gut wie möglich zu schreiben.

Gruß

Chango

Geschrieben

hallo,

Wie würdest du maskieren?

h2 = h & 0x00ff;

genau, so habe ich es in meinem Beispielprogramm auch gemacht - allerdings (wie Klotzkopp schon gesagt hat) muss man natürlich immer die jeweiligen Eigenschaften des Compilers beachten ;)

gruß

mep

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...