Bitshift: 4x uint8_t in einen uint32_t



  • Hallo!

    Mit folgendem Code hab ich einen uint32_t in 4 uint8_t zerstückelt:

    int i = 0;	
    		for (i = 0; i <= 7; i++){	
    			byte_array[i][0] = (uint8_t)  tmp_array[i];
    			byte_array[i][1] = (uint8_t) (tmp_array[i] >>  8);
    			byte_array[i][2] = (uint8_t) (tmp_array[i] >> 16);
    			byte_array[i][3] = (uint8_t) (tmp_array[i] >> 24);		
    		}
    

    Jetzt möchte ich ihn aber wieder zurückhaben :p
    Mein verzweifelter Ansatz wäre für jedes der 8 uint32_t´s

    int i = 0;
    
    				for(i = 0; i <= 3; i++){ // für jedes Teil-Byte
    					teilbyte = // ??
    

    Könnt ihr mir kurz sagen, wie ich denn meinen kompletten uint32_t wieder zurückbekomme? 😉

    Viele Grüße und Dank!
    Stefan


  • Mod

    Angenommen teilbyte[0] bis teilbyte[3] sind deine Stücke die du wie gezeigt erzeugt hast:

    ergebnis =   teilbyte[0]
               + teilbyte[1] << 8
               + teilbyte[2] << 16
               + teilbyte[3] << 24;
    

    Manchmal ist das Leben einfacher als man denkt 😋



  • Danke SeppJ für die schnelle Antwort! 🙂


Anmelden zum Antworten