#include <stdio.h> #include <stdint.h> void convert_to_big_endian(uint32_t value, uint8_t arr[4]) { // Your code here // arr[0] = (value>>24)&0xFF; // arr[1] = (value>>16)&0xFF; // arr[2] = (value>>8) &0xFF; // arr[3] = (value) &0xff; for(int i=0;i<4;i++){ arr[i] = (value>>(8*(3-i)) & 0xFF); } } int main() { uint32_t value; uint8_t arr[4]; scanf("%u", &value); convert_to_big_endian(value, arr); for (int i = 0; i < 4; i++) { printf("%u", arr[i]); if(i<3){ printf(" "); } } return 0; }
Step :- 1 iterating the loop 4 times
for(int i=0;i<4;i++){
arr[i] = (value>>(8*(3-i)) & 0xFF);
}
Explanation:-
i=0 :- arr[0] = (value>>24)&0xFF;
i=1:- arr[1] = (value>>16)&0xFF;
i=2 :- arr[2] = (value>>8) &0xFF;
i=3:- arr[3] = (value) &0xFF;
Test Cases
Test Results
Input
305419896
Expected Output
18 52 86 120