常用网络知识

1.字节序

比如int a=0x12345678;

大端字节序:低字节存在高位,高字节存在低位。78存在高位,12存在低位。

小端字节序:低字节存在地位,高字节存在高位。78存在低位,12存在高位。

x86通常是小端,arm通常大端。

面试常考题:如何知道自己机器是大端还是小端?

答:

typedef union{

unsigned short int value;

unsigned char p[2];

}to;

to sp;

sp.value=0xabcd;

然后分别看p[0]等于0xab还是0xcd

一般网络字节序是大端,机器字节序一般是小端

#include<arpa/inet.h>里有4种字节序转化函数

uint32_t htonl(uint32_t hostlong)            //长整型转换

uint16_t htonl(uint16_t hostshort)            //短整型转换

uint32_t ntohl(uint32_t netlong)            //长整型转换

uint16_t ntohl(uint16_t netlong)            //短整型转换

inet_pton();                        //字符串装换成网络ip

inet_ntop();                        //网络ip转换成字符串

 

posted @ 2019-01-13 00:04  代码拯救世界可以吗  阅读(161)  评论(0编辑  收藏  举报