1、使用指针的形式验证
#include<myhead.h>
int main(int argc, const char *argv[])
{
int num = 0x12345678;
char * ptr = (char *)#
//判断第一个字节中的数据是多少
if(*ptr == 0x12) //地址低位存储数据高位
{
printf("big endian\n");
}else if(*ptr == 0x78) //地址低位存储数据低位
{
printf("little endian\n");
}
return 0;
}
2、使用共用体的方式验证
#include<myhead.h>
int main(int argc, const char *argv[])
{
union Endian
{
int num;
char ch;
}data;
data.num = 0x12345678;
//判断第一个字节中的数据
if(data.ch == 0x12) //低地址存储数据高位
{
printf("big endian\n");
}else if(data.ch == 0x78) //低地址存储数据低位
{
printf("little endian\n");
}
return 0;
}
3、将小端存储的数据转换成大端存储
#include<myhead.h>
int main(int argc, const char *argv[])
{
int num = 0x12345678;
char * ptr = (char *)#
//判断第一个字节中的数据是多少
if(*ptr == 0x12) //地址低位存储数据高位
{
printf("big endian\n");
}else if(*ptr == 0x78) //地址低位存储数据低位
{
printf("little endian\n");
}
//定义一个指针指向数据的结束位置
char *qtr = ptr+ 3;
while(qtr > ptr)
{
//交换
char temp = *ptr;
*ptr = *qtr;
*qtr = temp;
ptr++;
qtr--;
}
printf("num = %#x\n", num);
return 0;
}
4、将主机字节序转换成网络字节序
#include<myhead.h>
int main(int argc, const char *argv[])
{
unsigned int num = 0x12345678;
unsigned short value = 0x1234;
//将主机字节序转换为网络字节序
unsigned int num1 = htonl(num);
unsigned short value1 = htons(value);
printf("num1 = %#x\n", num1);
printf("value1 = %#x\n", value1);
return 0;
}
5、
#include<myhead.h>
int main(int argc, const char *argv[])
{
//定义一个ip地址
char *ip = "192.168.125.82";
//调用函数将点分十进制转换为整数
in_addr_t ip_test = inet_addr(ip);
printf("ip_test = %#x\n", ip_test); //IP地址对于的网络字节序
printf("对应的主机字节序为:%#x\n", ntohl(ip_test)); //输出ip地址对应的主机字节序
return 0;
}