码迷,mamicode.com
首页 > 其他好文 > 详细

判断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式

时间:2014-06-27 09:28:41      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:big-endian   little-endian   

第一个版本:

//return true in big-endian machines
bool check_big_endian1()
{
	int a = 0;
	int *p = &a;

	*(char *)p = 1;
	return a != 1;
}

采用union的第二个版本:

//return true in big-endian machines
bool check_big_endian2()
{
	union{
		int  a;
		char b;
	}var;//sizeof(var)=4
	var.a = 1;

	return var.b != 1;
}

最后看一个避免函数调用的版本:

static union
{
	int  a;
	char b;
}_s_var_endian_check = {1};

#define ISLITTLEENDIAN (_s_var_endian_check.b == 1)
#define ISBIGENDIAN !ISLITTLEENDIAN

这样就可以通过宏ISLITTLEENDIAN和ISBIGENDIAN读取静态变量的值来判断是否是小端模式或者大端模式了。

不过这是C的写法,C++里面可以采用内联(inline)函数来避开对宏的使用。



判断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式,布布扣,bubuko.com

判断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式

标签:big-endian   little-endian   

原文地址:http://blog.csdn.net/linysuccess/article/details/34843567

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!