一、字节序列转换
#include<arpa/inet.h>
uint16_t htons(uint16_t hostshort);
功能:将unsigned short 类型的数据的主机字节顺序转换为网络字节顺序。
返回值:成功返回转换后的字节序列。
以下为例:
#include <stdio.h>
int main(void)
{
unsigned int i ,num=0xab127980;
unsigned char * pc;
printf("nums address is %p , and it's value is 0x%x\n\n",&num,num);
pc = (unsigned char *)#
for(i = 0 ; i < 4 ; i++)
{
printf("%p:0x%x\n\n",pc,(unsigned int)*pc);
pc++;
}
unsigned short port;
port = 0x6789;
printf("port number in host byteorder is 0x%x\n",port);
printf("port number in network byteorder is 0x%x\n",htons(port));
}
运行结果:
[root@rac2 ~]# ./byteorder
nums address is 0xbfe78be0 , and it's value is 0xab127980
0xbfe78be0:0x80
0xbfe78be1:0x79
0xbfe78be2:0x12
0xbfe78be3:0xab
port number in host byteorder is 0x6789
port number in network byteorder is 0x8967
由此可见:本机使用的是小端系统,即整数的地位放在内存的低地址,整数的高位放在内存的高地址。
由于每台PC机的内部对标量的字节存储顺序是不同的。而在网络数据交换中,要求网络中传输的数据格式必须是网络字节格式,即大端字节序。因此需要转换格式。