Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <type_traits>
- // Warning: Untested :P
- namespace util
- {
- template< typename T, size_t S = sizeof( T ) >
- typename std::enable_if< std::is_integral< T >::value, T >::type
- SwapBytes( T t )
- {
- T toReturn;
- for ( size_t i = 0; i < S; ++i )
- {
- sf::Uint8 byte = ( t >> ( i * 8 ) ) & 0xff;
- toReturn += byte << ( ( S - 1 - i ) * 8 );
- }
- return toReturn;
- }
- template< typename T, size_t S = sizeof( T ) >
- typename std::enable_if< std::is_floatingpoint< T >::value, T >::type
- SwapBytes( T t )
- {
- union
- {
- T f2;
- unsigned char b[ S ];
- } dat1, dat2;
- dat1.f2 = t;
- for ( size_t i = 0; i < S; ++i )
- {
- dat2.b[ i ] = dat1.b[ S - 1 - i ];
- }
- return dat2.f2;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement