代码示例
示例代码分别在mac与android的开发环境下测试主机的字节序,还有通过IDE分析一个Int整型在内存的实际存储,于"肉眼可视"的方式去观察数据在内存的存储情况,加深与理解字节大小端。代码示例了两种方式判断主机字节序是否为小端字节序
mac 环境示例
代码
#include <iostream>
using namespace std;
bool isLittleEndian() {
int i = 1;
//强转char指针,即指向int的首字节,可访问int的首字节的内容/值
char *a = (char *) &i;
return *a == 1;
}
bool isLittleEndian2() {
union {
int i;
char c;
} un;
//char跟int是共用内存块,然后内存对的,即char跟int的首字节是同一块内存空间
un.i = 1;
return un.c == 1;
}
int main() {
int x = 0x12345678;
char *p = (char *) &x;
cout << "逻辑上的顺序: 0x 12 34 56 78" << endl;
printf("内存中的顺序: 0X %0x % 0x %0x %0x \n", p[0], p[1], p[2], p[3]);
cout << "当前主机序字节序是: ";
if (isLittleEndian()) {
cout << "小端"<< endl;
} else {
cout << "大端" << endl;
}
cout << "当前主机序字节序是: ";
if (isLittleEndi

本文通过代码示例,在Mac与Android开发环境下测试主机字节序,借助IDE分析Int整型在内存的存储,直观展示数据存储情况以加深对大小端字节序的理解。同时介绍了大小端字节序的概念、由来,以及网络字节序,还给出相关注意事项和参考文章。
最低0.47元/天 解锁文章
8746

被折叠的 条评论
为什么被折叠?



