現在的CPU累加器一次能夠裝載至少4個字節的一個整數,那么字節在內存中的排列順序不同,導致累加器使用的結果不同,這就是字節序問題 。
例如:
我們存儲一個int類型的數字;int a = 1;
主機字節序分為兩種:
#include<stdio.h>void Test()
{union myunion{short a;char b[2];}test;test.a = 0x0102;if(b[0] == 1 && b[1] == 2)printf("大端\n");else if(b[0] == 2 && b[1] == 1)printf("小端\n");elseprintf("未知\n");
}
字節序轉換htonl。由于不同主機之間的字節序存儲方式不同,這就導致,如果發送方與接收方主機字節序存儲方式不同,所以在通信時,需要先將主機字節序進行統一,這就是主機字節序裝換為網絡字節序。
#include<netinet/in.h>
//長整型主機字節序轉換為網絡字節序
unsigned long int htonl(unsigned long int hostlong);//短整型主機字節序轉換為網絡字節序
unsigned short int htons(unsigned short int hostshort);//長整形網絡字節序裝換為主機字節序
unsigned long int ntohl(unsigned long int hostlong);//短整形網絡字節序裝換為主機字節序
unsigned short int ntohs(unsigned short int hostshort);
注意:長整型通常是用于轉換IP地址,短整型主要轉換端口號。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态