kohlrak

Untitled

Jul 17th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.50 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. template <typename T>
  4. T swap_endian(T u)
  5. {
  6.     static_assert (CHAR_BIT == 8, "CHAR_BIT != 8");
  7.  
  8.     union
  9.     {
  10.         T u;
  11.         unsigned char u8[sizeof(T)];
  12.     } source, dest;
  13.  
  14.     source.u = u;
  15.  
  16.     for (T k = 0; k < sizeof(T); k++)
  17.         dest.u8[k] = source.u8[sizeof(T) - k - 1];
  18.  
  19.     return dest.u;
  20. }
  21.  
  22. int main(){
  23.         int le = 0x00FF3200, be;
  24.         be=swap_endian<int>(le);
  25.         printf("LE: 0x%08x\nBE: 0x%08x\n", le, be);
  26.         return 0;
  27. }
Advertisement
Add Comment
Please, Sign In to add comment