数据格式:大端模式(Big

您所在的位置:网站首页 组态王数据格式转换 数据格式:大端模式(Big

数据格式:大端模式(Big

2024-04-11 01:14| 来源: 网络整理| 查看: 265

有没有想过当定义一个变量的时候,这个变量在内存中是如何存放的呢?这就涉及到数据格式中的大端模式(Big-endian)和小端模式(Little-endian)

大端模式(Big-endian):高位字节存放在内存的低端地址,低位字节存放在内存的高端地址小端模式(Little-endian):低位字节存放在内存的高端地址,高位字节存放在内存的低端地址

eg1:int a = 0x12345678,a在内存中是如何保存的?

int型变量需要4个字节保存数据,a是4个字节的变量把 a 分为 0x12,0x34,0x56,0x78 4个部分,分别保存到4个字节中内存中,每个字节都有一个编号,这个编号就是内存的地址,所以没每个字节都有一个地址a 需要占据4个字节,就会占据4个地址,这4个地址也是从低地址变化到高地址

若 a 变量中高字节(0x12)保存在低地址,则是大端模式 若 a 变量中低字节(0x78)保存在低地址,则是小端模式

如图,假设起始地址为0x4000 大端模式(Big-endian):

内存地址

0x40000x40010x40020x4003存放内容0x120x340x560x78

小端模式(Little-endian):

内存地址

0x40000x40010x40020x4003存放内容0x780x560x340x12

eg2:使用程序判断CPU是大端还是小端

#include int main() { union w { int a; char b; } c; c.a = 0x12345678; printf("%x\n",c.b); }

打印结果为:78

我使用的是Linux系统编写的程序,由此可以看出此CPU为小端模式

分析:联合体所有成员占用同一段内存,修改一个成员会影响所有成员,给联合体的 a 赋值,但 a 和 b 的类型不同,从而轻松地获得了CPU对内存采用Little-endian还是Big-endian模式读写。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3