int to bytes



  • Hi!

    Ich wollte ein unsigned int in vier unsigned char's haben.
    Da hab ich das gefunden:

    byte1 = deinInteger & 0xFF;
    byte2 = deinInteger>>8 & 0xFF;
    byte2 = deinInteger>>16 & 0xFF;
    byte2 = deinInteger>>24 & 0xFF;
    

    Aber geht das nicht auch SO:

    byte1 = deinInteger & 0x000000FF;
    byte2 = deinInteger & 0x0000FF00;
    byte2 = deinInteger & 0x00FF0000;
    byte2 = deinInteger & 0xFF000000;
    

    Was wäre denn daran falsch?
    Und gibt es Unterschiede bei int/unsigned int und char/unsigned char?

    Und dazu noch eine Frage:
    Bleibt das Ergebnis solcher Bitoperatoren immer gleich, wenn man es unter Windows ausführt?
    Ist es egal, ob das 32bit (x86?) kompilierte Programm auf einem x86, x86-64, x64, amd64, IA64 oder sonstwo läuft?

    Danke schonmal!



  • Was wäre denn daran falsch?
    Und gibt es Unterschiede bei int/unsigned int und char/unsigned char?

    Google doch mal danach...



  • Habe ich. Bin vllt. zu dumm.



  • Convert0r schrieb:

    Aber geht das nicht auch SO:

    byte1 = deinInteger & 0x000000FF;
    byte2 = deinInteger & 0x0000FF00;
    byte2 = deinInteger & 0x00FF0000;
    byte2 = deinInteger & 0xFF000000;
    

    Nein, damit löscht Du nur Bits und byte2 bis byte4 werden zu 0. Außerdem denke ich dass du noch einen cast brauchst sonst beschwert sich der Compiler



  • Achsoooo ich Dumpfbacke, verstehe schon.
    Es werden nur die niederwertigsten Bits kopiert (Bis auf die Größe der Variable, zu der zugewiesen wird), neh?

    Bleibt noch die Frage zu signed/unsigned und die letzte Frage.


Anmelden zum Antworten