也谈大端模式(big endian)和小端模式(little endian) (一) 引 子

8、计算机中的大端存储(Big-Endian)和小端存储(Little-Endian) 计算机中的大端存储(Big-Endian)和小端存储(Little-Endian)是两种不同的多字节数据在内存中的排列方式,直接影响数据的读写、网络传输和跨平台兼容性 阅读详情

    以32位机来讲,比如有这样一个整形数0x11223344,假设从内存0x0地址开始存放这个数。

    对于大端模式(Big endian),低地址存放高字节。所以0x11223344在内存中的存放如下:

    0x00:0x11

    0x01:0x22

    0x02:0x33

    0x03:0x44

    而对于小端模式(Little endian),低地址存放低字节。所以0x11223344在内存中的存放和大端是相反的:

    0x00:0x44

    0x01:0x33

    0x02:0x22

    0x03:0x11

    相信大家对这个知识点都比较熟悉,不过稍微想想,马上又会觉得干嘛要弄两种不同顺序的存放方式呢?(遵循不讲故事只讲事实的原则,这里不再赘述其来由) 

    容易想到的问题是:存放方式不同,读取出来的时候会不会出错呢?读取一个字节得到的值是什么?读取两个字节呢?读取四个字节呢?

    首先,变量的地址都是变量存放的低地址,不论大端还是小端,如果有int ByteOrder= 0x11223344,我们假设变量ByteOrder在内存中的地址为0x00,那么不论读取一个字节还是四个字节,都会从内存的0x00地址处开始读取。

    大端模式:一次读取四个字节,很显然我们取回来的是数应该是0x11223344。取两个字节(我们可以这样写代码:short b = (*(short *)&ByteOrder),再打印b的值就成了):0x1122。取一个字节:0x11。

    小端模式:同样一次读取四个字节,我们得到的肯定也是0x11223344。而读取两字节:0x3344。取一个字节:0x44。

    所以现在摆在我们面前的主要有两个问题:

    1. 取一个/两个字节的时候,大小端取出来的值不同,但是当按四个字节取出来的时候,又相同了,这是为什么呢?

    2.上面是用指针的方式取值的,如果改成强制转换,比如short b = (short)ByteOrder,值又是什么呢? 

   

大端和小端(Big endian and Little endian):1、大端小端转换方法 2、检测方法 对于整型、长整型等数据类型 - Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据 - Little endian 则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放。 阅读详情

相关推荐

【SAP】ABAP——ALV显示后选择数据操作

在ALV显示后,可全选、全不选或者选择几条数据进行发邮件、更新、下单等等操作。 在user_command中的实现方式如下: 方式一: FORM user_command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield. DATA: lr_grid TYPE REF TO cl_gui_alv_grid. DATA: lt_rows TYPE lvc_t_row WITH

Mona_1220的博客 4092

数据存储的大小端格式问题记录

大小端定义: 大端格式:即数据的高位存在低地址,如0x11223344,在存储器中从低到高的存储顺序就是0x11,0x22,0x33,0x44 小端格式:即数据的高位存在高地址,如0x11223344,在存储器中从低到高的存储顺序就是0x44,0x33,0x22,0x11 大端格式会更好理解一点,因为它是顺序的;小端格式会需要转换一下。 STM32的内存和flash都是按照小端格式存储的。 如何判别大小端: 1.判别RAM的大小端 方法1:定义一个32位变量,给其赋值0x11223344,再定

灵哎惹,凌沃敏的博客 1656

矿卡CMP 170HX的AI推理性能优化实战

GPU计算在现代AI推理中扮演着核心角色,其并行计算架构特别适合处理神经网络的大规模矩阵运算。通过CUDA指令集优化和计算管线重构,可以显著提升硬件利用率,这在边缘计算和带宽敏感型任务中尤为重要。以NVIDIA CMP 170HX矿卡为例,通过禁用FMA指令和框架适配优化,其FP32性能可提升15.9倍,在Qwen2.5-1.5B模型的4-bit量化推理中达到A100同架构78%的解码速度。这种优化技术不仅让淘汰矿卡重获新生,更为边缘AI部署提供了高性价比解决方案,特别适合7B以下量化模型部署和多路视频分析

weixin_30432579的博客 636

大端模式小端模式详解(不懂你打我,略略~~)

大端模式小端模式简解(不懂你打我,略略~~) 先看概念 大端模式(Big-Endian),是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。 小端模式(Little-Endian),是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。 先看两者概念中粗体字后面

jokerMingge的博客 5932

fpga在线升级 linux_仅5000行Verilog代码、可在FPGA上跑轻量级Linux系统的RISC-V内核

本文发布于www.hackster.io,由东京理工大学的计算机学院开发,专用于教学与加速用(苏老师也一直认为这是RISC-V当前的主要方向)。目前市场上开源的RISC-V内核已经很多,但很少有公开的RISC-V计算系统是非常轻型且能跑Linux系统的。这一款RISC-V内核就可以运行在FPGA上,用Verilog编写的,需要很少硬件的资源就能跑起来,所以可以运行在一个低成本的FPGA上。来看一下...

weixin_34083807的博客 1867

闲鱼客户端三重动态签名机制解析:x-sign、x-mini-wua与x-umt

在移动客户端安全通信中,设备级动态签名已成为主流App防范自动化攻击的核心手段。其原理是将设备指纹、运行时行为与可信硬件标识深度融合,生成不可复用、不可跨端、不可静态伪造的请求凭证。这类机制超越传统Token或Session鉴权,具备强上下文绑定性与实时熵值校验能力,广泛应用于电商、社交及开放平台等高风险接口场景。技术价值体现在有效识别模拟器、无头浏览器与集群化爬虫,同时保障多端一致性与合规数据对接。本文聚焦闲鱼客户端实际落地的x-sign(带设备上下文的混合签名)、x-mini-wua(小程序行为水印)与

weixin_35732273的博客 498

大端(Big Endian)与小端(Little Endian)详解

最近在研究JAVA NIO的一些内容,接触到字节在内存里面的存储知识,以前只知道int类型在内存里面的存储方式分高位在前和低位在前之分,但为什么会这样却不是很清楚。于是具体找到了一些资料。 Byte Endian是指字节在内存中的组织,所以也称它为Byte Ordering,或Byte Order。      对于数据中跨越多个字节的对象, 我们必须为它建立这样的约定:(1) 它的地址是多

tuchun的专栏 1429

关于RT-Thread中PWM无法正常输出的学习

按照官方的PWM配置,并没有输出PWM,网上有比较多的办法,试了很多,有些还是不能实现输出,这里做个记录。记录自己完成PWM输出的过程,以及修改的地方。 关于STM32CubeMX配置就不多说了,网上有很多。 首先必定是按照流程来,一定一定按照流程来!!! 需要注意的是加上通道数!!!! 这是流程上没有的,也是RTT的一点小BUG吧 配上board.c中添加的代码,我用的是PA2定时2的通道3,需要使用的朋友修改对应定时器和GPIO! void HAL_TIM_Base_MspInit(TIM_Han

weixin_42566346的博客 3556

大端模式和小端模式

在 各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机 通信领 域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正 确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:Big-Endian和Little-Endian,下面先从字节序说起。 一、什...

tempsitegoogle 854

PD3.0详解 协议的时序timer和counter计数

前面介绍了关于PD协议的交互,还有协议层数据各个字段的含义,但是一直没有系统的说关于协议的时序,还有部分counter,就是协议允许发送的次数,或者一些其他计数。 大师匈今天说一下关于这方面的东西,这些东西都是非常关键的东西,但是相对来说PD标准内对时序的要求还是比较宽泛,非常容易能够实现这样的要求。 Timer 1、CRCReceiveTimer 0.9~1.1ms 表示每次通信收到goodcrc的时间,必须在这个时间内收到goodcrc, 我们要注意不是在0.9~1.1ms内,而是第三方可以在这个范

大师匈的博客 5007

量化 insider 爆料! 散户打板必亏?(打板必看!量化资金如何“隔日砸盘”收割散户)

量化开发 insider 爆料💥 散户追的涨停板📉,可能是机构故意做的陷阱!本文从技术视角拆解“涨停陷阱”,帮你看清市场真实逻辑🧠。

XiaoqiangClub的博客 455

4个char型合并为1个int型

上位机在与一些下位机通信的时候,许多送上来的数据是char型的字符串,下位机为了表示一些较大的数据,往往用多个char来表示,上位机需要对拿到的数据做转换。 比如送上来的数据是 0x11 0x22 0x33 0x44 想表达的是 0x11223344 对比较多的高级语言可能处理起来比较轻松,C处理起来会稍微麻烦一点,下面是一个拼接的函数接口 //4个char型合并成一个int型,例如0x11 0x22 0x33 0x44,合并后的int数据为0x11223344 unsigned int fourCha

奔狼 5783

基于STM32L4XX、HAL库的RTL8201F 以太网收发器(PHY)驱动程序设计

define PHY_RESET_DELAY 1000 // PHY复位延迟(ms)#define PHY_AUTONEGO_DELAY 3000 // 自动协商延迟(ms)/* 检查PHY ID (RTL8201F的ID为0x001CC816) *//* 系统时钟配置,确保ETH有50MHz时钟 *//* 初始化CPU, AHB和APB总线时钟 */

zhusl6688的博客 814

大端模式(big-endian)与小端模式(little-endian)

参考自大端模式与小端模式 大端模式是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中. 小端模式是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。 大小端模式的由来在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器

jason_cuijiahui的博客 2万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

大端模式和小端模式的区别

一、什么是大端和小端 Big-Endian和Little-Endian的定义如下: Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 举一个例子,比如数字0x12 34 56 78在内存中的表示形式为: 1)大端模式: 低地址 -----------------> 高地址 0x12 | 0x34 | 0x56 | 0x78 2)小端模式: 低地址 ------

weixin_48067074的博客 5117

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java -- Big Endian and Little Endian 大端和小端概念讲解及如何转换

字节是计算机中数据处理的基本单位。 计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte=8bit)。 计算机进行数据处理时,一次存取、加工和传送的数据长度称为字(word)。一个字通常由一个或多个(一般是字节的整数位)字节构成。 但并非所有计算机都以相同的顺序存储由多字节值组成的字节。考虑一个由2个字节组成的16位因特网。存储该值有两种方式 本文针对大小端的概念进行讲解,并提供如何进行大小端转换的示例

penriver的博客 5349

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

大小端字节序(Big Endian和Little Endian)

那么何为字节序(Endia)呢? Big Endian是指低地址存放最高有效字节(MSB),而Little Endian则是低地址存放最低有效字节(LSB)。 大端模式 所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 例子: 0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000 0000440: b

熊浪的博客 6960

大端存储(Big-Endian)和小端存储(Little-Endian)讲解

特性大端存储 (Big-Endian)小端存储 (Little-Endian)最高有效字节 (MSB)存储在最低内存地址存储在最高内存地址最低有效字节 (LSB)存储在最高内存地址存储在最低内存地址内存顺序数值高位 -> 低地址,数值低位 -> 高地址数值低位 -> 低地址,数值高位 -> 高地址直观性高(内存转储顺序即数值顺序)低(内存转储顺序是数值的逆序)CPU运算亲和性一般可能更好(从低位开始运算)网络传输标准是(网络字节序)否 (需转换为网络字节序)常见架构。

曾经也曾立志 2278

如何判断CPU是大端还是小端模式

一、概念及详解 在各种体系的计算机中通常采用的字节存储机制主要有两种: Big-Endian和Little-Endian,即大端模式和小端模式。 Big-Endian和Little-Endian的定义如下: 1) Little-Endian:就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 2) Big-Endian:就是高位字节排放在内存的低地址端,低位字节排放在内存的高

Mlib 1万+

Big Endian(大端)和 Little Endian(小端)模式

文章目录1、字符表示(编码)2、什么是字节序3、大小端模式的区别举个例子如何 C 编程判断CPU是大端还是小端模式例题一例题二:大端模式向小端模式发送数据4、字节序转换函数 核心就是:一个是数据字节顺序,一个内存存储地址顺序 为什么会有 大端模式和小端模式的区别的,这是由于编码的原因,因此,先大致介绍一下编码: 1、字符表示(编码) 在之前的计算机中,一般都是用 ASCII 码,但是其只能表示 2^7 = 128 个不同的字符。(仅仅只能表示 英文) 随着计算机的发展,计算机要表示不同国家的文字,比如

Mikchy的博客 2513

大端模式Big Endian和小端模式Little Endian以及浮点数在内存中的存储

大端模式和小端模式存放数据的区别很简单:大端模式先存放数据的高位字节,小端模式先存放数据的低位字节。比如 int a=0x01234567,a所占的四个字节16进制标示:01 23 45 67。在Linux系统中,使用命令:```bashlscpu```输出:```bashArchitecture:          x86_64CPU op-mode(s):        32-bit, 64-...

bdss58的专栏 8495

大端模式(Big-Endian)和小端模式(Little-Endian)

大端模式(Big-Endian)和小端模式(Little-Endian)是计算机科学中用于描述多字节数据的字节序(即字节的排列顺序)的术语。这两种模式定义了数据在内存中如何存储和读取,特别是在涉及多字节数据类型(Int ,Float)时。

申徒嘉的专栏 1352

【协议森林】详解大端(big endian)与小端(little endian)

1、字节序 字节顺序,又称端序或尾序(英语:Endianness)。在几乎所有的机器上,多字节对象都被存储为连续的字节序列。例如在C语言中,一个类型为int的变量x地址为0x100,那么其对应地址表达式&x的值为0x100。且x的四个字节将被存储在存储器的0x100, 0x101, 0x102, 0x103位置,这就是所谓的字节序。字节存放的顺序有两种模式:大端模式和小端模式。 2、大小端...

平凡的世界 4522

大端 和 小端(Big-endian和Little-endian )

战争开始是由于以下的原因:我们大家都认为,吃鸡蛋前,原始的方法是打破鸡蛋较大的一端,可是当今皇帝的祖父小时候吃鸡蛋,一次按古法打鸡蛋时碰巧将一个手指弄破了,因此他的父亲,当时的皇帝,就下了一道敕令,命令全体臣民吃鸡蛋时打破鸡蛋较小的一端,违令者重罚。叛乱平息后,流亡的人总是逃到那个帝国去寻救避难。关于这一争端,曾出版过几百本大部著作,不过大端派的书一直是受禁的,法律也规定该派的任何人不得做官。Cohen,一位网络协议的早期开创者,第一次使用这两个术语来指代字节顺序[25],后来这个术语被广泛接纳了。

二分掌柜的 8926

ARM中的big-endian和little-endian

<br />    在ARM体系中,每个字单元包含4个字节单元或者两个半字单元。在字单元中,4个字节哪一个是高位字节,哪一个是低位字节则有两种不同的格式:big-endian和little-endian格式。在小端模式中,低位字节放在低地址,高位字节放在高地址;在大端模式中,低位字节放在高地址,高位字节放在低地址。<br />   如果将一个32位的整数0x12345678存放到一个整型变量(int)中,这个整型变量采用大端或者小端模式在内存中的存储由下表所示。<br />   <br /><br />地址

刘广辉的自习室 7117
上一篇: 结构体位操作--反汇编(二)
下一篇: 浅谈Linux中断处理(一)
linuxdrivers
博客等级 码龄16年 147粉丝 14原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值