Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- template <typename T>
- T swap_endian(T u)
- {
- static_assert (CHAR_BIT == 8, "CHAR_BIT != 8");
- union
- {
- T u;
- unsigned char u8[sizeof(T)];
- } source, dest;
- source.u = u;
- for (T k = 0; k < sizeof(T); k++)
- dest.u8[k] = source.u8[sizeof(T) - k - 1];
- return dest.u;
- }
- int main(){
- int le = 0x00FF3200, be;
- be=swap_endian<int>(le);
- printf("LE: 0x%08x\nBE: 0x%08x\n", le, be);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment