主机字节序和网络字节序
1.大端字节序和小端字节序:
大端字节序存储时值的高位存储在较小的地址,值的低位存储在较大的地址。
小端字节序存储时值的高位存储在较大的地址,值的低位存储在较小的地址。
以0x12345678为例:
0x1000 0x1001 0x1002 0x1003
小端: 78 56 34 12
大端: 12 34 56 78
可以看出大端比较直观,符合阅读习惯。小端符合思维认知,因为低地址存储低位。
2.网络字节序和主机字节序:
tcp/ip规定它们的网络字节序都是大端字节序。主机字节序可能是大端也可能是小端,与主机的cpu有关,与操作系统无关。
3.主机字节序与网络字节序的转化:
C/C++下面函数可以完成主机字节序和网络字节序的转化:
#include <arpa/inet.h>uint32_t htonl(uint32_t hostlong); //uint32_t主机序转换网络序
uint16_t htons(uint16_t hostshort); //uint16_t主机序转换网络序
uint32_t ntohl(uint32_t netlong); //uint32_t网络序转换主机序
uint16_t ntohs(uint16_t netshort); //uint16_t类型网络序转换主机序
最后一个数字代表long,s代表short,h代表host即主机,n代表network,即网络。中间有个to。
64位数互转只能分成两部分转化,可以使用类型双关。有些编译器可能有独有的函数来转化。
主机字节序和网络字节序相关推荐
- linux网络编程一:主机字节序与网络字节序的的判断
linux网络编程一:主机字节序与网络字节序的的判断(1)现代CPU的累加器一次能装载至少4字节(32位),即一个整数.那么这4字节在内存中排列的顺序将影响它被累加器装载成的整数值,这就是字节序问题 ...
- 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs
Part 1: htons函数具体解释 在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序. 在Intel机器下,执行以下程序 i ...
- 【Linux】主机字节序和网络字节序
(一)问题提出:为什么要有主机字节序和网络字节序的存在? 现在大多数PC机器都是小端字节序(小端存储),也称为主机字节序:但不排除有大端PC机器的存在. 若在两台字节序不同的主机上传输数据时,接收端将 ...
- 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs【转】
(转自:https://blog.csdn.net/kulala082/article/details/53431473) Part 1: htons函数具体解释 在Linux和Windows网络编程 ...
- 字节序 主机字节序与网络字节序互相转换
目录 1.什么是字节序? 2.字节序分类 3.为什么要有大端字节序和小端字节序? 4.主机字节序和网络字节序 5.主机字节序与网络字节序的转换 6.怎么判断自己的主机是小端字节序还是大端字节序呢? 7 ...
- Linux---主机字节序与网络字节序
现在的CPU累加器一次能够装载至少4个字节的一个整数,那么字节在内存中的排列顺序不同,导致累加器使用的结果不同,这就是字节序问题 . 例如: 我们存储一个int类型的数字:int a = 1; 主机字 ...
- 什么是字节序(端序、低端字节序、高端字节序、网络字节序)
前言 一个内容为12(字符串)的文本文件,它的第一个字节是什么(小端序)?如果你的回答是0x32,那你真的应该好好理解下字节序了.如下图所示,我这里的正确答案是0x31.当然如果你的回答是不一定,这似 ...
- 本地字节序和网络字节序
本地字节序和网络字节序 字节序指不同的CPU访问内存中多字节数据的时候,存在大小端的问题,并且一定是访问多字节数据的时候才会存在大小端的问题,如果CPU访问的是字符串,则不存在大小端的问题: 那么如何 ...
- 本地字节序与网络字节序的相互转换(IP地址、端口号)
一般数据在内存中是按照字节存储的,存储的方式分为大端和小端.在不知道对方主机的存储方式的情况下,我们不知道是否需要转换数据的存储方式.因此,TCP/IP协议规定:发送到网络的数据流应采用大端字节序! ...
最新文章
- CentOS下的Memcache安装
- SylixOS 无Uboot版BSP
- 学习okhttp wiki--Connections.
- 【算法】快速排序/数组第K小的元素
- 将手机网站做成手机应用的JS框架
- 信息学奥赛一本通(1412:二进制分类)
- 以下内容为Stackoverflow上整理以作纪录
- 兄弟们,请求支援,怎么实现互通,全部都互通的
- linux patch 命令小结
- linux执行perl脚本,如何从Perl脚本中运行Perl脚本?
- PHPcmsv9采集-PHPcmsv9免费采集-PHPcmsv9自动采集
- uni-app框架简介
- python树莓派_树莓派python
- svchost.exe 上传下载占用大量资源
- 电脑桌面图标变成长方形咋办_为什么我的界面上的图标全部被一个长方形的图标覆盖了?...
- Matlab函数学习---sum函数(计算矩阵、数组和向量元素总和)
- 斯坦福NLP名课带学详解 | CS224n 第19讲 - AI安全偏见与公平(NLP通关指南·完结)
- Camera2倒计时拍摄和闪光灯
- 【树莓派入门】从零开始在树莓派上运行YOLOV5项目实战教程
- 单片机按键设计的四个方案