2010年6月30日星期三

convert between big-endian and little-endian values

Code:

inline void endian_swap(unsigned short& x)

{

x = (x>>8)


(x<<8);

}



inline void endian_swap(unsigned int& x)

{

x = (x>>24)


((x<<8) & 0x00FF0000)


((x>>8) & 0x0000FF00)


(x<<24);

}



// __int64 for MSVC, "long long" for gcc

inline void endian_swap(unsigned __int64& x)

{

x = (x>>56)


((x<<40) & 0x00FF000000000000)


((x<<24) & 0x0000FF0000000000)


((x<<8) & 0x000000FF00000000)


((x>>8) & 0x00000000FF000000)


((x>>24) & 0x0000000000FF0000)


((x>>40) & 0x000000000000FF00)


(x<<56);

}

没有评论:

发表评论