File tree Expand file tree Collapse file tree 3 files changed +92
-0
lines changed
Data_Struct_Implementation/endianessSwap Expand file tree Collapse file tree 3 files changed +92
-0
lines changed Original file line number Diff line number Diff line change 1+ CC =gcc
2+ CFLGAS =-Wall
3+ DEPS =
4+ OBJ = endianess
5+
6+ % .o : % .c $(DEPS )
7+ $(CC ) -c -o $@ $< $(CFLAGS )
8+
9+ $(OBJ ) : $(OBJ ) .o
10+ $(CC ) -o $@ $^ $(CFLAGS )
11+
12+ clean :
13+ rm -f $(OBJ ) $(OBJ ) .o
Original file line number Diff line number Diff line change 1+ ## Endianess Conversion
2+ #### Usage
3+ ```
4+ make
5+ ./endianess
6+ ```
7+
8+ ### Code
9+ ``` c
10+ #include < stdio.h>
11+ #include < stdlib.h>
12+ #include < stdint.h>
13+
14+ uint32_t endianess_swap (uint32_t num) {
15+ num = ((num & 0xffff0000) >> 16) | ((num & 0x0000ffff) << 16);
16+ num = ((num & 0xff00ff00) >> 8) | ((num & 0x00ff00ff) << 8);
17+ return num;
18+ }
19+
20+ int main (int argc, char * argv[ ] ) {
21+
22+ uint32_t num = 0x12345678;
23+ uint8_t *n = (uint8_t*) #
24+ int i;
25+
26+ for (i = 0; i < sizeof(num); i++) {
27+ printf("%x ", *n++);
28+ }
29+ printf("\n");
30+
31+ uint32_t swap_num = endianess_swap(num);
32+ n = (uint8_t*) &swap_num;
33+
34+ for (i = 0; i < sizeof(swap_num); i++) {
35+ printf("%x ", *n++);
36+ }
37+ printf("\n");
38+
39+ return 0;
40+ }
41+
42+ ```
43+
44+ ## Reference
45+
46+ https://www.geeksforgeeks.org/little-and-big-endian-mystery/
47+
48+
Original file line number Diff line number Diff line change 1+ #include <stdio.h>
2+ #include <stdlib.h>
3+ #include <stdint.h>
4+
5+ uint32_t endianess_swap (uint32_t num ) {
6+ num = ((num & 0xffff0000 ) >> 16 ) | ((num & 0x0000ffff ) << 16 );
7+ num = ((num & 0xff00ff00 ) >> 8 ) | ((num & 0x00ff00ff ) << 8 );
8+ return num ;
9+ }
10+
11+ int main (int argc , char * argv []) {
12+
13+ uint32_t num = 0x12345678 ;
14+ uint8_t * n = (uint8_t * ) & num ;
15+ int i ;
16+
17+ for (i = 0 ; i < sizeof (num ); i ++ ) {
18+ printf ("%x " , * n ++ );
19+ }
20+ printf ("\n" );
21+
22+ uint32_t swap_num = endianess_swap (num );
23+ n = (uint8_t * ) & swap_num ;
24+
25+ for (i = 0 ; i < sizeof (swap_num ); i ++ ) {
26+ printf ("%x " , * n ++ );
27+ }
28+ printf ("\n" );
29+
30+ return 0 ;
31+ }
You can’t perform that action at this time.
0 commit comments