`

大、小端模式的测试

阅读更多

大端模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中

小端模式:是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。

采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。到目前为止,采用大端或者小端进行数据存放,其孰优孰劣也没有定论。

嵌入式系统开发者应该对Little-endianBig-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。

16bit宽的数0x1234

Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:

内存地址

0x4000

0x4001

存放内容

0x34

0x12

Big-endian模式CPU内存中的存放方式则为:

内存地址

0x4000

0x4001

存放内容

0x12

0x34

32bit宽的数0x12345678

Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:

内存地址

0x4000

0x4001

0x4002

0x4003

存放内容

0x78

0x56

0x34

0x12

而在Big-endian模式CPU内存中的存放方式则为:

内存地址

0x4000

0x4001

0x4002

0x4003

存放内容

0x12

0x34

0x56

0x78

C语言中,不同于结构体,共用体(联合体)中的几种不同类型的变量存放在同一段内存单元中。利用这一特点,可以用联合体变量判断ARMx86环境下,存储系统是是大端还是小端模式。


#include "stdio.h"
int main()
{
union data
{
int a; //4 bytes
char b; //1 byte
} c; //
联合体的最大字节数与其中所占最大字节的成员一样大。
c.a=1;
if (c.b==1)
printf("It is Little_endian!\n");
else
printf("It is Big_endian!\n");
return 1;
}
说明:
1
c中,联合体(共用体)的数据成员都是从低地址开始存放。
2
若是小端模式,由低地址到高地址c.a存放为0x01 00 00 00c.b被赋值为0x01

————————————————————————————

地址 0x00000000 0x00000001 0x00000002 0x00000003
c.a 01 00 00 00
c.b 01
————————————————————————————
3
若是大端模式,由低地址到高地址c.a存放为0x00 00 00 01c.b被赋值为0x0
————————————————————————————
地址 0x00000000 0x00000001 0x00000002 0x00000003
c.a 00 00 00 01
c.b 00
————————————————————————————
4
根据c.b的值的情况就可以判断cpu的模式了,在XP环境下的intel CPU是小端模式,用ADS可测试arm 920T也是小段模式!
分享到:
评论

相关推荐

    Float类型大小端转换测试程序

    在计算机科学中,数据在内存中的存储方式有两种主要格式:大端模式(Big-Endian)和小端模式(Little-Endian)。这两种模式涉及到多字节数据类型,如整数和浮点数,如何在其字节序列中存储其值。本文将深入探讨...

    ST32堆栈增长方向及大小端测试

    - **大小端模式测试**:可以创建一个包含多字节数据的变量,如uint32_t,然后将其分别赋值为0x12345678或0x78563412。读取这个变量的每个字节并比较其顺序,以确定系统的大小端模式。 ### 4. 示例代码 ```c #...

    数据读取 切除 大小端模式转换 每1024byte数据读取

    有些系统(如Intel x86/x64)采用小端模式,即最低有效字节存储在内存地址的低位;而其他系统(如PowerPC和SPARC)则采用大端模式,最高有效字节在地址低位。当数据在这些系统之间传输时,需要进行大小端转换。在...

    详解大端模式和小端模式

    "详解大端模式和小端模式" 大端模式和小端模式是计算机科学中的一种字节顺序表示方法,用于描述多字节数据在内存中的存储顺序。该概念最早由Danny Cohen提出,用于网络协议的字节顺序表示。 大端模式(Big-Endian...

    Android 端 Iperf 测试 APP

    **Android 端 Iperf 测试 APP 知识点详解** `iperf` 是一个广泛使用的网络性能测试工具,主要用于测量网络带宽、延迟以及数据传输的稳定性。在 Android 平台上,`iperf` 通常被开发成 APP 形式,以便用户能够方便地...

    确认大端模式或小端模式(最直接有效的方法)

    在计算机科学中,大端模式(Big_endian)和小端模式(Little_endian)是两种不同的字节序,主要应用于多字节数据类型的存储。字节序是指在一个多字节的数据结构(如整数、浮点数)中,较高位字节(高位字节通常包含...

    ModbusTCP,pc端测试工具

    在PC端,为了测试和调试ModbusTCP设备或系统,我们常常需要使用专门的测试工具。本篇文章将深入探讨ModbusTCP以及如何利用PC端的测试工具进行有效的通信测试。 **1. ModbusTCP简介** Modbus是最早出现的工业通信...

    ZYNQ PS端以太网收发测试

    本教程将深入讲解如何在ZYNQ PS端进行以太网收发测试,以确保网络通信功能的正确性。 以太网是局域网中最常见的通信协议,其工作在OSI模型的第二层——数据链路层。ZYNQ PS端通常集成有千兆以太网控制器,如EMAC...

    sha1纯C算法 大小端代码

    在大端模式和小端模式的转换宏部分,代码可能定义了一些预处理器宏,这些宏用于在不同字节序的系统上正确地处理数据。大端模式是指数据的最高有效字节存储在内存的最低地址,而小端模式则相反。在处理多字节类型如...

    ST32堆栈测试代码

    3. 大小端模式测试:创建一个多字节数据,如一个32位整数,将其存储在堆栈中,然后读取并比较其字节顺序。 4. 结果验证:根据测试结果,输出堆栈增长方向和系统大小端模式。 理解这些基本概念对于编写高效、稳定的...

    Adb工具及测试模式开启

    2. 进入"服务测试"或"工程模式",找到"测试模式"选项并启用。 **六、USB_driver详解** USB_driver是用于电脑识别和控制Android设备的驱动程序,确保ADB能够正常识别设备。对于64位的Windows 8系统,确保安装的是...

    TRI三端电容极性测试

    在ICT测试中,测试程序会按照特定的测试模式执行,例如上述描述中提到的ICT1, ICT(Vo2), ICT(Vo3)等,这些测试步骤对应了不同的测试条件和判断标准。比如,测试ICT(Vo2)时,如果Vo2电压小于Vo1电压,则表明施加的0.2...

    Avalanche性能测试手册.docx

    知识点:多端口测试是性能测试的重要环节,需要了解测试仪规格、设备类型、测试模式等,避免测试错误影响测试结果。 Avalanche性能测试手册是思博伦仪器性能测试的详细手册,包括硬件连接、软件使用、组网、HTTP...

    微信小程序接口测试工具

    PHP是广泛用于服务器端编程的一种语言,ThinkPHP5是基于PHP的框架,它提供了一系列便捷的开发工具和模式,以加速Web应用的构建。在这个场景下,微信小程序接口测试工具可以与ThinkPHP5配合,帮助开发者在开发过程中...

    java网络游戏服务器端测试

    在Java网络游戏服务器端测试中,我们关注的核心是服务器性能、稳定性、安全性以及用户体验。服务器端是游戏世界的骨架,它处理玩家交互、游戏逻辑、数据存储等关键任务。在这个场景下,`AsyncServer.java` 文件很...

    反射内存卡rf2g测试.pdf

    通过观察测试结果,可以确认数据是以大端还是小端模式存储。 整个文档涵盖了反射内存卡的基础知识、测试环境的搭建、大小端测试的概念以及实际的操作步骤,为了解和应用反射内存卡提供了一个相对完整的知识框架。...

    USB3.0 的物理层发送端测试方案.pdf

    ### USB3.0 物理层发送端测试方案解析 #### 一、USB3.0 概述 USB (Universal Serial Bus) 即通用串行总线,是一种用于连接计算机与外围设备的标准接口。自2000年后,随着USB 2.0版本的普及,该标准得到了广泛应用...

    wifi吞吐量测试软件(Android端和电脑端)

    在Android设备上安装iperf3后,只需输入相应的命令,就可以与电脑端的Iperf或Jperf建立连接,进行双向的数据传输测试,从而获取WiFi吞吐量数据。 在电脑端,我们首先需要搭建iperf的运行环境。这通常涉及下载iperf...

    基于springboot+uniapp+vue开发的学生互动课堂,包含PC后台系统、微信小程序,采用前后端分离开发模式.zip

    基于springboot+uniapp+vue开发的学生互动课堂,包含PC后台系统、微信小程序,采用前后端分离开发模式.zip基于springboot+uniapp+vue开发的学生互动课堂,包含PC后台系统、微信小程序,采用前后端分离开发模式.zip...

Global site tag (gtag.js) - Google Analytics