首页 > 其他分享 >主机字节顺序和网络字节顺序

主机字节顺序和网络字节顺序

时间:2023-02-21 20:44:27浏览次数:27  
标签:顺序 字节 主机 hostlong 网络 CPU

字节顺序

单个字节,不存在字节顺序这一说
字节顺序就相当于排队是从高往低排还是从低往高排。
从高往低排就是大端字节顺序
从低往高排就是小端字节顺序

具体定义
小端字节顺序(little-endian):按照内存增长方向,高位数据存储于低位内存中;
大端字节顺序(big-endian):按照内存的增长方向,高位数据存储于低位内存中;

主机字节顺序

主机字节顺序由CPU决定,看cpu的实现,有的CPU是小端字节排序,有的CPU是大端字节排序

网络字节顺序

而我们知道,当我们要传输时,需要知道目标服务器的地址,即ip地址
如果同一组数,不规定排序的话,在CPU解析时,可能得到完全不同的IP地址
网络字节顺序是TCP/IP为任意整数数据定义的统一字节顺序,是大端字节顺序。

网络字节顺序与主机字节顺序转换

unix提供一些函数进行网络字节顺序与主机字节顺序转换

//主机字节顺序转换为网络字节顺序
unit32_t htonl(unit32_t hostlong);
unit16_t htons(unit16_t hostlong);

//网络字节顺序转换为主机字节顺序
unit32_t ntonl(unit32_t hostlong);
unit16_t ntons(unit16_t hostlong);

IP地址和点分十进制串之间的转换

int inet_pton(FE_INET,const char *src,void *dst);
const char *inet_ntop(AF_INET,const void *src,char *dst,socklen_t size);

标签:顺序,字节,主机,hostlong,网络,CPU
From: https://www.cnblogs.com/JavaGoTray/p/17142344.html

相关文章