C++大小端转换的程序,用的模板,暂时不考虑有符号的,unsigned short,unsigned long, unsigned long long类型的数据都可以转换。
// 整数大小端转换 适用2 4 8个字节数值
template <typename T>
static T transBytes(T arg)
{
int len = sizeof (T);
if (len <= 1)
return arg;
const T constNum = 0xFF;
T targetNum, tempNum;
T retNum = 0;
for (int i = 0; i < len; ++i)
{
targetNum = constNum << (i * 8);
tempNum = arg & targetNum;
if (i < len / 2) // 左移
tempNum <<= (8*(len - 1 - 2*i));
else // 右移
tempNum >>= (8*(1 + 2*i - len));
retNum += tempNum;
}
return retNum;
}