.

  • ​​在vs里面打开内存查看器​​
  • ​​打开调试,窗口,内存,内存1​​
  • ​​在地址中输入&a,可以获取a的内存地址的信息​​
  • ​​将地址的最后一位改成5,可以看到数字从左向右移动了一格​​
  • ​​说明地址是从左向右增加的,也就是左边是地址的低位​​
  • ​​那么就是说低位储存了78,就是这个int的低权重的位置,所以是小端存储​​
  • ​​可以使用char*截取数据进行判断​​
  • ​​union​​

在vs里面打开内存查看器

打开调试,窗口,内存,内存1

#include <iostream>
#include <xmemory>

using namespace std;

#define debug(x) cout<<#x<<": "<<(x)<<endl;


int main() {

int a = 0x12345678;
char* p = (char *)&a;

debug(*p == 0x12)
debug(*p == 0x78)
* p = 0x0;
return 0;
}

在地址中输入&a,可以获取a的内存地址的信息

【内存查看&指针强转&union】判断大小端存储方式_c++

将地址的最后一位改成5,可以看到数字从左向右移动了一格

说明地址是从左向右增加的,也就是左边是地址的低位

【内存查看&指针强转&union】判断大小端存储方式_#include_02

那么就是说低位储存了78,就是这个int的低权重的位置,所以是小端存储


可以使用char*截取数据进行判断

#include <stdio.h>
int main() {
int i = 0x87654321;
char *p;
p = (char *) &i;
if (*p == 0x21) {
printf("这是小端存储\n");
}
else {
printf("这是大端存储\n");
}
return 0;
}

union

#include <iostream>
#include <cstdio>

using namespace std;

union un {
int i;
char c;
};

int main() {

un u;
u.i = 0x12345678;
printf("u.c: %x\n",u.c);

if (u.c == 0x78) {
cout << "这是小端" << endl;
}
else {
cout << "这是大端" << endl;
}

char* p = &u.c;
printf("*(++&u.c): %x\n", *(++p));

return 0;
}

【内存查看&指针强转&union】判断大小端存储方式_#include_03