大小端介绍与分析

2023-05-16

1. 字节序

    字节序即字节的存储顺序,如果数据都是单字节的,那怎么存储无所谓了,但是对于多字节数据,比如int,double等,就要考虑存储的顺序了。字节序是硬件层面的东西,通常只和你使用的处理器架构有关,而和编程语言无关。字节序分为大端序和小端序。

   大端序:数据的高位字节存放在地址的低端 低位字节存放在地址高端。

   小端序:数据的高位字节存放在地址的高端 低位字节存放在地址低端。

0x1234567的大端字节序和小端字节序的写法如下图。

可见,大端模式和字符串的存储模式类似。但是也有各自的特点:
• 小端模式 :强制转换数据不需要调整字节内容,1、2、4字节的存储方式一样。计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。
• 大端模式 :符号位的判定固定为第一个字节,容易判断正负。此外,人类还是习惯读写大端字节序。所以,除了计算机的内部处理,其他的场合几乎都是大端字节序,比如网络传输和文件储存。

2. 比特序

       字节序是一个对象中的多个字节之间的顺序问题,比特序就是一个字节中的8个比特位(bit)之间的顺序问题。一般情况下系统的比特序和字节序是保持一致的。以二进制数值10110101为例,其在不同平台下的内存位序如下:

 

 大端的含义是数值的最高位1(最左边的1)放在了内存起始位置上,即数值10110101的大端内存布局为10110101。

    小端的含义是数值的最低位1(最右边的1)放在了内存起始位置上,即数值10110101的小端内存布局为10101101。

3.位域

    对于位域有一个约定:在C语言的结构体中如果包含了位域,如果位域A定义在位域B之前,那么位域A总是出现在低地址的比特位。 这就决定了网络编程中位域在定义时必须处理大小端问题。(同样,结构体中前面的成员也处于较低的地址)

        对于IP头,可以这样理解,网络传输时version在前,ihl在后,网络是大端序,可以认为version是数字的高位,ihl是低位,所以:

       在大端机中,由于低地址是高位,所以位域version必须在前面;

      在小端机中,由于高地址是高位,所以位域version必须在后面。

   如下代码所示:

  struct iphdr {
  #if defined(__LITTLE_ENDIAN_BITFIELD)
          __u8    ihl:4,
                  version:4;
  #elif defined (__BIG_ENDIAN_BITFIELD)
          __u8    version:4,
                  ihl:4;
  #else
  #error  "Please fix <asm/byteorder.h>"
  #endif
          __u8    tos;
          __be16  tot_len;
          __be16  id;
          __be16  frag_off;
          __u8    ttl;
         __u8    protocol;
         __sum16 check;
         __be32  saddr;
         __be32  daddr;
         /*The options start here. */
 };
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大小端介绍与分析 的相关文章

  • 洗碗机超声波换能器振子设计

    超声波的声波是一种可以穿透液体和固体的声学化学能量 xff0c 超声波的污染非常小穿透力强 xff0c 所以人们就想到了用它来清洗餐具 xff0c 于是乎超声波洗碗机就应运而生了 洗碗机超声波换能器振子作为超声波洗碗机的三大组件之一 xff
  • 超声波清洗机电路板线路板设计

    在我们日常生活中遇见的超声波清洗设备 xff0c 大多是使用低频率或低功率的超声波 xff0c 而且由于被清洗件尺寸往往较小 xff0c 所以清洗槽的尺寸往往也较小 xff0c 清洗槽内壁高度一般不高于400mm 这类清洗机清洗物品涉及范围
  • 在Mac中开发STM32单片机

    想要在Mac下开发32单片机 xff0c 又不想装虚拟机的同学可以看看 使用工具 xff1a CLion xff08 JetBrains家族一员 xff09 STM32CubeMX xff08 配置芯片 xff0c 生成初始化代码 xff0
  • 超声波电路板驱动线路设计

    超声波电路板驱动线路通电交流电压220V 10 xff0c 电源电压需稳定 体积小 占用空间小 功率大 清洗效果好 自动化程度高 超声波电路板驱动线路驱动超声清洗换能器依次启动低频初洗 中频精洗 换水 高频漂洗 排水等工序 超声波发生器的输
  • 小型超声波PCB电路板设计

    小型超声波PCB电路板通过自动频率跟踪技术 PWM调功控制技术 电容阻抗匹配技术来匹配超声波清洗换能器 小型超声波PCB电路板在驱动负载工作时 xff0c 负载参数会发生变化 xff0c 这就是需要小型超声波PCB电路板能及时捕捉到新的谐振
  • 压电陶瓷超声波换能器设计

    压电陶瓷超声波换能器是值由电能通过压电陶瓷片转化为机械能 xff0c 通过结构件放大传播出去的一种机械运动 压电陶瓷超声波换能器的压电陶瓷片尺寸越大 xff0c 输出的功率越大 xff0c 相应的频率越低 xff0c 而尺寸越小频率相对应的
  • 数字式小型超声波清洗机设计

    数字式小型超声波清洗机可以超声 加热 定时LED数码显示 xff0c 整机为不锈钢结构 使用新型加热方式 xff0c 有效提升加热效果 xff1b 结构工艺上提升防漏水等级 xff0c 同时兼容无效热能导出结构 xff1b 压花处理不锈钢工
  • 超声波清洗振板盒带发生器设计

    超声波清洗振板盒带发生器投入式清洗 xff0c 方便携带移动使用 xff1b 时间可调 xff1a 1 99分钟可调 xff0c 可常开 xff1b 功率可调 xff1a 10 100 可调 xff1b 304外壳 xff1a SUS304
  • PE塑料超声波焊接机设备设计

    聚乙烯 xff08 polyethylene xff0c 简称PE xff09 是乙烯经聚合制得的一种热塑性树脂 在工业上 xff0c 也包括乙烯与少量 烯烃的共聚物 聚乙烯无臭 xff0c 无毒 xff0c 手感似蜡 xff0c 具有优良
  • jetson nx fan auto pwm

    参考 xff1a Jetson Nano PWM自动调速 Ay yzx的博客 CSDN博客 代码 xff1a usr bin env python import os import commands from the path of thi
  • 关于github px4 gps 驱动的开发的总结

    源码编译上边已经写过文章了 遇到的几个问题 1 解决虚拟机不能共享文件夹的问题 一开始虚拟机的更新 vmware tools 是灰色的 xff0c 不能点 xff0c 然后通过关掉虚拟机 xff0c 然后再开启的时候 xff0c 在没有启动
  • 解决Android Studio 安装gradle失败、很慢

    拉取新的项目工程是 xff0c 总是会遇到gradle 下载特别特别慢 xff0c 而且经常都是等了很久最终还以失败告终 这时 xff0c 我们可以使用浏览器自己去下载gradle xff0c 或者找同事要一份相同版本的gradle xff
  • 基于数传电台的多主通讯系统的实现

  • JNI基础简介

    导读 在前面的几篇文章中 xff0c 笔者介绍了C 43 43 中的指针 引用 智能指针 多线程 类型转换 异常处理等相关知识点 xff0c 如果想要熟练掌握 xff0c 并能在实际项目中运用 xff0c 光是看肯定是毫无用处 xff0c
  • C++ class

    namespace 在变量或函数前面加上命名空间 xff0c 用来区分其它位置中的同名函数或变量 span class token macro property span class token directive keyword incl
  • realsense r200使用过程记录

    realsense r200 相机 采用的结构光 43 双目立体视觉 xff0c 使用可以使用室外场景 xff0c 但是有些注意的事项 xff0c 该款相机在sdk 方面貌似总有些bug 相比之前的测过的zed astra kinectv1
  • 从io模型到ppc,tpc,reactor,preactor

    所有的系统I O都分为两个阶段 xff1a 等待就绪和操作 读就是等待系统可读和真正的读 写就是等待系统可写和真正的写 1 网络io模型 这是我们常见的一张图 1 传统的bio 就是同步阻塞的 当调用socket read的时候 会阻塞 直
  • ip校验和 及 udp校验和 的计算方法

    一 ip校验和的计算 计算方法 1 ip包头 共20个字节 按照每16个bit作为一个值依次进行相加 2 将计算结果的进位加到低16位上 3 将结果取反 ip包头的内存内容 eg 45 00 00 20 0F B8 00 00 80 11
  • 轻量化固态激光雷达的三维定位与建图

    点云PCL免费知识星球 xff0c 点云论文速读 文章 xff1a Lightweight 3 D Localization and Mapping for Solid State LiDAR 作者 xff1a Han Wang Chen
  • 嵌入式Linux下CAN接口socket发送调试

    1 简介 最近在做嵌入式linux can通讯的调试 xff0c 需要用到扩展帧 xff0c 参照示例代码和linux库改为扩展帧格式发送 参考链接 链接 https blog csdn net toradexsh article deta

随机推荐

  • 矩阵转置与矩阵相乘

    1 转置矩阵 1 1转置矩阵简介 把矩阵A的行换成同序数的列得到的新矩阵 xff0c 叫做A的转置矩阵 Transpose of a Matrix xff0c 记作ATAT 例如 xff1a 因此 xff0c 转置矩阵的特点 xff1a x
  • Python+Opencv:解决打开摄像头慢的问题,现在秒开视频

    前言 打开摄像头非常慢 大概需要5 11秒才能输出视频 这个问题困扰了我很久 一直没得到解决 今天终于得到解决 实现了秒开 值得记录和庆贺一下 我的开发环境 不同的开发环境可能不会遇到我这样的问题 1 操作系统是windows10 64位
  • WAP网页游戏

    最近利用空余时间开发了一款类似3GQQ家园的网页游戏 使用apache 43 mysql 43 php 游戏地址 xff1a www cmdandxgz top bug可能很多 xff0c 正在测试 游戏页面如下
  • WPS里公式居中、编号右对齐

    WPS里 xff0c 我目前没找到公式自动编号的方式 xff0c 在此提供一种还算编辑的手动编号并右对齐的方式 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 6
  • 【计算机视觉基础】8.内部参数描述

    目录 1 Film Coords gt Pixel Coords 2 变换 2 1 平移 2 2 尺度变换 2 3 旋转 2 4 刚体运动 2 5 刚体 43 尺度变换 2 6 仿射变换 2 7 投影变换 3 2D变换总结如下图 1 Fil
  • 【计算机视觉基础】5.投影变换扩展(单应性Homograph估计)

    1 投影变换 投影变换分为平行投影 xff08 正交投影 xff09 和中心投影 xff08 透视投影 xff09 xff0c 投影变换是联系三维空间物体与二维图形的桥梁 基础的变换参考之前的博客 计算机视觉基础 3 矩阵变换图形 xff0
  • 人类3D的感觉是什么

    目录 一 人是如何 看 到3d物体的 1 xff0c 眼睛的对焦距离 2 xff0c 两只眼睛同时观看物体的差别 3 xff0c 眼睛在移动中观测物体的差别 4 xff0c 特定物体的大小 5 xff0c 物体的几何形变 6 xff0c 光
  • ubuntu命令行访问网页

    sudo apt get install w3m w3m www baidu com使用命令行访问网页 xff0c 但效果不是很好
  • Linux下使用matlab运行.m文件

    在Linux下安装完matlab后 xff0c 会在 usr local bin 下生成matlab文件 xff0c 可以使用matlab命令 Usage matlab h help n e arch v 61 variant v 61 a
  • numpy数组与list之间的转换

    a 61 3 234 34 3 777 6 33 a为python的list类型 将a转化为numpy的array np array a array 3 234 34 3 777 6 33 将a转化为python的list a tolist
  • SSD深度解析:MLC颗粒和TLC颗粒到底有多大差别?

    计算机技术发展到今天 xff0c CPU和内存性能早已不是性能瓶颈 xff0c 但是硬盘依然是电脑常见瓶颈 xff01 固态硬盘的出现极大的改善机械硬盘的存储效率 xff0c 但是因为固态硬盘还处于行业发展初期 xff0c 所以成本很高 x
  • 泰勒(Taylor)展开式(泰勒级数)

    目录 泰勒公式 余项 1 佩亚诺 Peano xff09 余项 xff1a 2 施勒米尔希 罗什 Schlomilch Roche xff09 余项 xff1a 3 拉格朗日 xff08 Lagrange xff09 余项 xff1a 4
  • 【计算机视觉基础】4.仿射变换

    主要看这个哦 xff1a 马同学 xff1a 如何通俗地讲解 仿射变换 这个概念 xff1f 知乎 简单来说 xff0c 仿射变换 就是 xff1a 线性变换 43 平移 目录 1 线性变换 1 1 旋转 1 2 推移 xff08 图像学中
  • Selenium+Python自动化脚本环境搭建

    本文仅介绍环境的搭建 xff0c 不包含任何脚本编写教程 先整体说一下需要用到工具 1 Python环境 xff08 包括pip xff09 2 谷歌浏览器 xff08 包括对应的WebDriver xff09 详细步骤 xff1a 一 P
  • CUDA之nvidia-smi命令详解

    nvidia smi是用来查看GPU使用情况的 我常用这个命令判断哪几块GPU空闲 xff0c 但是最近的GPU使用状态让我很困惑 xff0c 于是把nvidia smi命令显示的GPU使用表中各个内容的具体含义解释一下 这是服务器上特斯拉
  • CMakeLists之引入头文件(五)

    1 新建项目 新建项目t4 目录结构如下 xff1a 该程序引入了自建的hello h程序库包含了函数func main c的内容如下所示 xff1a main c include lt hello h gt int main func r
  • 用HttpPost登陆验证时,用户名和密码放在请求头部header中的处理方法,形式为Authorization: username password。

    xfeff xfeff post setHeader 34 Authorization 34 34 your token 34 这里主要是要搞清楚your token是什么 xff0c 把认证信息传递正确 xff0c 这个认证信息是通过用户
  • vs code 运行C语言并调试

    vs code 运行C语言 2022 03 19 mingw64下载地址更新 xff08 window xff09 task json文件修改launch json文件修改 更新版 xff08 window xff09 1 下载MinGW编
  • 【Http认证方式】——Basic认证

    今天在访问请求 xff1a http 192 168 2 113 8080 geoserver rest workspaces时 xff0c 浏览器弹出窗口需要输入用户名和密码 xff0c 并且 xff0c 如果不输入或者输入错误 xff0
  • 大小端介绍与分析

    1 字节序 字节序即字节的存储顺序 xff0c 如果数据都是单字节的 xff0c 那怎么存储无所谓了 xff0c 但是对于多字节数据 xff0c 比如int xff0c double等 xff0c 就要考虑存储的顺序了 字节序是硬件层面的东