大小端判断以及字节序转化
大小端判断函数:
//判断大小端字节序void judgeEndian(){int num = 0x01020304;char* pchar = (char*)#if(*pchar==0x01){printf("the endian is Big-Endian\n");}else if(*pchar==0x04){printf("the endian is little-Endian\n");}else{printf("other-Endian\n");}}
字节序转化:
//改变数字num的字节序//如果是大端转化为小端//如果是小端转化为大端int changeEndian(int num){int d = num&0xff;num>>=8;int c = num&0xff;num>>=8;int b = num&0xff;num>>=8;return (d<<24)|(c<<16)|(b<<8)|num;}
完整版测试代码:
#include <stdio.h>#include <stdlib.h>//判断大小端字节序void judgeEndian(){int num = 0x01020304;char* pchar = (char*)#if(*pchar==0x01){printf("the endian is Big-Endian\n");}else if(*pchar==0x04){printf("the endian is little-Endian\n");}else{printf("other-Endian\n");}}//改变数字num的字节序//如果是大端转化为小端//如果是小端转化为大端int changeEndian(int num){char* p = (char*)#int d = (*p++)&0xff;int c = (*p++)&0xff;int b = (*p++)&0xff;int a = *p;return (d<<24)|(c<<16)|(b<<8)|a;}int main(){judgeEndian();int num = 0x11223344;printf("before change endian , num = 0x%x\n",num);printf("after change endian , num = 0x%x\n",changeEndian(num));return 0;}
