解析:主机序也称为本地字节序,有大端和小端之分
大端:低地址放大数据;
小端:低地址放小数据,我们所知道的 网络都是采用大端模式。
该算法主要需要测试主机序,如果是大端则不做任何的改变,如果是小端则逆序
#include <stdio.h>
bool IsLittle() //判断是否是小端,小端低地址放小数据
{
short a = 0x0001; //小数据为0x01,高数据为0x00
return *(char*) & a == 0x01;
}
long Htonl(long a)
{
long tmp = 0;
if(!IsLittle())
{
return a;
}
for(int i = 0; i < sizeof(a); i++)
{
tmp = (tmp << 8) | (a & 0xff);
a >>= 8;
}
return tmp;
}
int main()
{
printf("%x\n",Htonl(0x00000001));
return 0;
}