C語言判斷機(jī)器CPU大小端模式的兩種方法
本文介紹使用C語言編寫程序判斷機(jī)器CPU大小端模式的兩種方法。
第一種方法思路:
利用指針的強(qiáng)制類型轉(zhuǎn)換
#include <stdio.h>
int main()
{
int a = 0x12345678;
char *p = (char *)&a;//強(qiáng)制轉(zhuǎn)換取到a最低字節(jié)的地址
if (*p == 0x78) {
//a 12 34 56 78(Hex)
//*p 78
printf("little endian\n");
}
else if (*p == 0x12) {
//a 78 56 34 12(Hex)
//*p 12
printf("big endian\n");
}
return 0;
}
第二種方法思路:
利用共用體所有數(shù)據(jù)都從同一地址開始存儲(chǔ)。
#include <stdio.h>
union test_union//用于測試的共用體
{
int a;//元素a,占4個(gè)字節(jié)
char b;//元素b,占1個(gè)字節(jié),b在內(nèi)存中的地址為a最低字節(jié)的地址
} test;
int main()
{
test.a = 0x12345678;
if (test.b == 0x78) {
//test.a 12 34 56 78(Hex)
//test.b 78
//b在內(nèi)存中的地址為a最低字節(jié)的地址
printf("little endian\n");
}
else if (test.b == 0x12){
//test.a 78 56 34 12(Hex)
//test.b 12
//b在內(nèi)存中的地址為a最低字節(jié)的地址
printf("big endian\n");
}
return 0;
}
- 我的個(gè)人主頁:http://www.techping.cn/
- 我的個(gè)人站點(diǎn)博客:http://www.techping.cn/blog/wordpress/
- 我的CSDN博客:http://blog.csdn.net/techping
- 我的簡書:http://www.lxweimin.com/users/b2a36e431d5e/timeline
- 我的GitHub:https://github.com/techping
歡迎相互follow~