c语言大端转小端函数 c语言 大端小端

请写一个C函数,判断处理器是大端存储还是小端

【转】

成都创新互联是网站建设技术企业,为成都企业提供专业的成都网站设计、做网站,网站设计,网站制作,网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制适合企业的网站。十载品质,值得信赖!

void IsBigEndian()

{

short int a = 0x1122;//十六进制,一个数值占4位

char b = *(char *)a; //通过将short(2字节)强制类型转换成char单字节,b指向a的起始字节(低字节)

if( b == 0x11)//低字节存的是数据的高字节数据

{

//是大端模式

}

else

{

//是小端模式

}

}

c语言实现2个字节的高低位转化

2个字节short int 高低位转化:

short int y=0x7f21;

y = ( (y 0xff00) 8) | ( (y 0x00ff ) 8);

printf("%#x",y);

-------------------------------

也可以利用 union

union B2

{

short int i;

unsigned char c[2];

// 。。。任意两字节类型

} ;

union B2 x;

unsigned char tmp;

x.i=0x1234;

tmp = x.c[0]; x.c[0]=x.c[1];x.c[1]=tmp;

// 也可以用上面的位运算方法交换高低端

printf("%#x\n",x.i);

// union 方法特别适合4字节8字节 大端小端码的转换操作。

结构体数据大小端转换 C语言

可以使用位域来定义,同时来转换。例如一个32位int型可以如下定义:

struct test

{

union 

{

int bits_4;

struct 

{

int bit1 : 8;

int bit2 : 8;

int bit3 : 8;

int bit4 : 8;

};

};

};

将test.bit1和test.bit4对调,test.bit2和test.bit3对调即可。


本文标题:c语言大端转小端函数 c语言 大端小端
网站网址:http://hbruida.cn/article/dosojdc.html