114. Little Endian to Big Endian

Back To All Submissions
Previous Submission
Next Submission

Code

#include <stdio.h>
#include <stdint.h>

union Data{
    uint32_t raw;
    uint8_t bytes[4];
};

uint32_t convert_endian(uint32_t value) {
    // Write logic to swap bytes
    //1. Split 32 bit value into 4 bytes ? Union?

    //1.1 Define new union instance & set raw 32 bit value
    Data value_bytes;
    value_bytes.raw = value;
    //printf("Raw: %d\n",value_bytes.raw);
    //printf("Byte: %d\n",value_bytes.bytes[2]);

    //2. Create a second union instance to put swapped bytes
    Data new_value;
    //3. Swap bytes into new union 
    for(int i=0;i<4;i++){
        new_value.bytes[i] = value_bytes.bytes[3-i];
    }
    //4. Return raw 32 bit value with swapped bytes
    return new_value.raw;
}

int main() {
    uint32_t val;
    scanf("%u", &val);
    printf("%u", convert_endian(val));
    return 0;
}

Solving Approach


 

Was this helpful?
Upvote
Downvote