方法一
UINT16 UINT16_Conver(UINT16 input)
{
return ((input & 0x00ff) << 8) | ((input & 0xff00) >> 8);
}
UINT32 UINT32_Conver(UINT32 input)
{
return ((input & 0x000000ff) << 24) | ((input & 0x0000ff00) << 8) | ((input & 0x00ff0000) >> 8) | ((input & 0xff000000) >> 24);
}
UINT64 UINT64_Conver(UINT64 input)
{
return ((input & 0x00000000000000ff) << 56) | ((input & 0x000000000000ff00) << 40) | ((input & 0x0000000000ff0000) << 24) | ((input & 0x00000000ff000000) >> 8) |
((input & 0x000000ff00000000) >> 8) | ((input & 0x0000ff0000000000) >> 24) | ((input & 0x00ff000000000000) >> 40) | ((input & 0xff00000000000000) >> 56);
}
方法二
void ConvertEndian(char* _p, int _size)
{
for (int i = 0; i * 2 < _size; ++i)
{
char temp = _p[i];
_p[i] = _p[_size - 1 - i];
_p[_size - 1 - i] = temp;
}
}
void ConvertEndian(void * _data,int _itemsize,int _count)
{
if (_itemsize <= 1)return;
char* p = (char*)_data;
for (int i = 0; i < _count; ++i, p += _itemsize)
{
ConvertEndian(p, _itemsize);
}
}