C语言 判断大端小端,怎么判断
inta=0x12345678;charb;b=(char)a;if(b==0x78)print"小端"elseprint"大端"这样行吗?...
int a = 0x12345678;
char b ;
b = (char)a;
if (b == 0x78)
print"小端"
else print"大端" 这样行吗? 展开
char b ;
b = (char)a;
if (b == 0x78)
print"小端"
else print"大端" 这样行吗? 展开
4个回答
展开全部
#include<stdio.h>
int check()
{
union check
{
int i;
char ch;
}c;
c.i =1;
return (c.ch == 1);
}
int main()
{
int ret;
ret = check();
if(ret == 0)
{
printf("Big\n");
}
else
{
printf("little\n");
}
return 0;
}
联合体中 变量i 和ch共用同一地址空间,它们都是从低地址开始存放。变量i的值为0x00 00 00 01, 如果是小端模式则01在低地址上,ch的值如果为01则是小端模式,否则是大端模式。
int check()
{
union check
{
int i;
char ch;
}c;
c.i =1;
return (c.ch == 1);
}
int main()
{
int ret;
ret = check();
if(ret == 0)
{
printf("Big\n");
}
else
{
printf("little\n");
}
return 0;
}
联合体中 变量i 和ch共用同一地址空间,它们都是从低地址开始存放。变量i的值为0x00 00 00 01, 如果是小端模式则01在低地址上,ch的值如果为01则是小端模式,否则是大端模式。
展开全部
计算机的一个int型数据是用多个字节表示的,如果在内存中存放时标称该数据的地址中存放的是数据的最低字节,就叫小端机,反之把高字节存放在标称地址中的则称为大端机。所以可以定义一个int变量,将其地址强制为char *型地址,检测该地址中的数据若是int变量的最低字节,则是小端机,反之则为大端机。代码如下:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
int n=1;
printf(*(char *)&n ? "小端\n" : "大端\n");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
小端
地址从低到高 0x78 0x56 0x34 0x12
大端
地址从低到高 0x56 0x78 0x 12 0x34
地址从低到高 0x78 0x56 0x34 0x12
大端
地址从低到高 0x56 0x78 0x 12 0x34
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询