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

字节顺序

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

具体定义
小端字节顺序(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);
posted @   必行之码  阅读(97)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示