2.1. 비트/바이트 순서 바꾸기 #
32비트 value
0001 ... 0110 0111 1000
↓
0001 1110 0110 ... 1000
0001 ... 0110 0111 1000
↓
0001 1110 0110 ... 1000
unsigned int convert_order32(unsigned int before) { int i; unsigned int r = 0; for(i = 0; i < 32; ++i) { if(before&1<<i) { r=r|1<<(31-i)/4*4+i%4; } } return r; }
바이트 순서 바꾸기
0x12345678 -> 0x21436587
r=r|1<<(i/4%2?(i/4-1)*4+i%4:(i/4+1)*4+i%4);
0x12345678 -> 0x78563412
r=r|1<<(i/4%2?(7-(i/4-1))*4+i%4:(7-(i/4+1))*4+i%4);