socket编程 -- 大端小端区别及转换
来源:互联网 发布:笑傲江湖 朝代 知乎 编辑:程序博客网 时间:2024/05/21 22:49
计算机数据存储有两种字节优先顺序:高位字节优先(称为大端模式)和低位字节优先(称为小端模式)。
内存的低地址存储数据的低字节,高地址存储数据的高字节的方式叫小端模式。
内存的高地址存储数据的低字节,低地址存储数据高字节的方式称为大端模式。
例子:对于内存中存放的数0x12345678
来说
如果是采用大端模式存放的,则其真实的数是:0x12345678
如果是采用小端模式存放的,则其真实的数是:0x78563412
如果称某个系统所采用的字节序为主机字节序,则它可能是小端模式的,也可能是大端模式的。
而端口号和IP地址都是以网络字节序存储的,不是主机字节序,网络字节序都是大端模式。
要把主机字节序和网络字节序相互对应起来,需要对这两个字节存储优先顺序进行相互转化。
这里用到四个函数:htons(),ntohs(),htonl()和ntohl().
这四个地址分别实现网络字节序和主机字节序的转化,这里的h代表host,n代表network,s代表short,l代表long。
通常16位的IP端口号用s代表,而IP地址用l来代表。
#include <arpa/inet.h>uint32_t htonl(uint32_t hostlong);uint16_t htons(uint16_t hostshort);uint32_t ntohl(uint32_t netlong);uint16_t ntohs(uint16_t netshort);
htonl 表示 host to network long
,用于将主机 unsigned int
型数据转换成网络字节顺序;
htons 表示 host to network short
,用于将主机 unsigned short
型数据转换成网络字节顺序;
ntohl、ntohs 的功能分别与 htonl、htons 相反。
0 0
- socket编程 -- 大端小端区别及转换
- socket 大端 小端 转换
- iOS 网络编程-socket 大端小端
- 大端小端转换
- 大端小端转换
- 【网络编程】大端小端模式及其转换
- 详解大端 小端 (函数判断及转换)
- 大端字节和小端字节的判断及转换
- 网络字节:大端和小端的判别及转换
- 大端和小端的判别及转换
- 网络通讯中的字节序转换及大端、小端
- 大端小端的转换
- 大端 小端 的区别
- 大端及小端模式
- 大端及小端模式
- 大端小端转换,le32_to_cpu 和cpu_to_le32
- 大端小端转换,le32_to_cpu 和cpu_to_le32
- 大端和小端, 转换, 判断
- [BZOJ1014] [JSOI2008]火星人prefix
- JSP生成验证码
- BestCoder Round #72 (div.2) B.Clarke and points
- POJ 2182 Lost Cows
- 多态思想并举例
- socket编程 -- 大端小端区别及转换
- HDU 5625 Clarke and chemistry(模拟)
- UIScrollView
- TP-LINK 桥接
- Bellman-Ford Algorithm and Dijkstra Algorithm
- Ubuntu 下安装 Nginx ( Nginx + Php5-fpm )
- 基于直方图的图像增强算法(HE、CLAHE、Retinex)之(二)
- cocos2dx Audio声音引擎
- Json校验不用愁