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位数互转只能分成两部分转化,可以使用类型双关。有些编译器可能有独有的函数来转化。

主机字节序和网络字节序相关推荐

  1. linux网络编程一:主机字节序与网络字节序的的判断

     linux网络编程一:主机字节序与网络字节序的的判断(1)现代CPU的累加器一次能装载至少4字节(32位),即一个整数.那么这4字节在内存中排列的顺序将影响它被累加器装载成的整数值,这就是字节序问题 ...

  2. 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs

    Part 1: htons函数具体解释      在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序. 在Intel机器下,执行以下程序 i ...

  3. 【Linux】主机字节序和网络字节序

    (一)问题提出:为什么要有主机字节序和网络字节序的存在? 现在大多数PC机器都是小端字节序(小端存储),也称为主机字节序:但不排除有大端PC机器的存在. 若在两台字节序不同的主机上传输数据时,接收端将 ...

  4. 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs【转】

    (转自:https://blog.csdn.net/kulala082/article/details/53431473) Part 1: htons函数具体解释 在Linux和Windows网络编程 ...

  5. 字节序 主机字节序与网络字节序互相转换

    目录 1.什么是字节序? 2.字节序分类 3.为什么要有大端字节序和小端字节序? 4.主机字节序和网络字节序 5.主机字节序与网络字节序的转换 6.怎么判断自己的主机是小端字节序还是大端字节序呢? 7 ...

  6. Linux---主机字节序与网络字节序

    现在的CPU累加器一次能够装载至少4个字节的一个整数,那么字节在内存中的排列顺序不同,导致累加器使用的结果不同,这就是字节序问题 . 例如: 我们存储一个int类型的数字:int a = 1; 主机字 ...

  7. 什么是字节序(端序、低端字节序、高端字节序、网络字节序)

    前言 一个内容为12(字符串)的文本文件,它的第一个字节是什么(小端序)?如果你的回答是0x32,那你真的应该好好理解下字节序了.如下图所示,我这里的正确答案是0x31.当然如果你的回答是不一定,这似 ...

  8. 本地字节序和网络字节序

    本地字节序和网络字节序 字节序指不同的CPU访问内存中多字节数据的时候,存在大小端的问题,并且一定是访问多字节数据的时候才会存在大小端的问题,如果CPU访问的是字符串,则不存在大小端的问题: 那么如何 ...

  9. 本地字节序与网络字节序的相互转换(IP地址、端口号)

    一般数据在内存中是按照字节存储的,存储的方式分为大端和小端.在不知道对方主机的存储方式的情况下,我们不知道是否需要转换数据的存储方式.因此,TCP/IP协议规定:发送到网络的数据流应采用大端字节序! ...

最新文章

  1. CentOS下的Memcache安装
  2. SylixOS 无Uboot版BSP
  3. 学习okhttp wiki--Connections.
  4. 【算法】快速排序/数组第K小的元素
  5. 将手机网站做成手机应用的JS框架
  6. 信息学奥赛一本通(1412:二进制分类)
  7. 以下内容为Stackoverflow上整理以作纪录
  8. 兄弟们,请求支援,怎么实现互通,全部都互通的
  9. linux patch 命令小结
  10. linux执行perl脚本,如何从Perl脚本中运行Perl脚本?
  11. PHPcmsv9采集-PHPcmsv9免费采集-PHPcmsv9自动采集
  12. uni-app框架简介
  13. python树莓派_树莓派python
  14. svchost.exe 上传下载占用大量资源
  15. 电脑桌面图标变成长方形咋办_为什么我的界面上的图标全部被一个长方形的图标覆盖了?...
  16. Matlab函数学习---sum函数(计算矩阵、数组和向量元素总和)
  17. 斯坦福NLP名课带学详解 | CS224n 第19讲 - AI安全偏见与公平(NLP通关指南·完结)
  18. Camera2倒计时拍摄和闪光灯
  19. 【树莓派入门】从零开始在树莓派上运行YOLOV5项目实战教程
  20. 单片机按键设计的四个方案

热门文章

  1. AP6236 WiFi模块调试记录
  2. 平安夜,Python 送你一顶圣诞帽
  3. 技术分享 | percona QAN 介绍
  4. 抖音申诉怎么写能通过?鹰迪电商
  5. 文件删除不了怎么办?
  6. 使用PyFlink, 如何在 zeppelin 里高效的开发 PyFlink Job?
  7. 1688API item_get - 获得1688商品详情
  8. 检测apache配置文件语法
  9. Yolov3转化Caffe框架详解
  10. 转:『天涯杂谈』现实让李培刚走下“神坛”,真正治好李宁的不是李培刚