Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

long in zwei Int umwandeln

Empfohlene Antworten

Veröffentlicht

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

Hallo Mephisto81,

danke für den Tipp, aber dass war gar nicht nötig.

:upps

ich habe das einfach so gemacht:

long int h;

int h1, h2;

h1 = h >> 8;

h2 = h;

Gruß

Chango

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

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.

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.