大小端判断及转换
#include <iostream> #include <stdio.h> using namespace std; int main(int argc, char *argv[]) { int a=0x1234; //小端 34 12 char c=(char)(a); //判断是大端还是小端,char 强制转换会把高位的地址给去掉 // int 占4字节,char 占1字节,只保留1字节的数据。 if(c == 0x12) { cout<<"big"<<endl; } else if(c == 0x34) { cout<<"small"<<endl; } // int b=0x00000018; cout<<sizeof(b)<<endl;//4 cout<<b<<endl; printf("%x\n",(b& 0x000000ff)<<24);// b一个16进制由4位二进制表示,24表示向左 //移6个0 // 如果右移或者左移的位数>=该数据的位数 // b << 32 // 实际移动的位数= 32 mod 该数据位数 =0 // b >> 36 // 实际移动的位数= 36 mod 该数据位数 =4 printf("%x\n",(a & 0xFF000000)>>24 | (a & 0x00FF0000)>>8 | (a & 0x0000FF00)<<8 | (a & 0x000000FF)<<24); return 0; }
#include <iostream> #include <stdio.h> using namespace std; int main(int argc, char *argv[]) { int a=0x1234; //小端 34 12 char c=(char)(a); //判断是大端还是小端,char 强制转换会把高位的地址给去掉 // int 占4字节,char 占1字节,只保留1字节的数据。 if(c == 0x12) { cout<<"big"<<endl; } else if(c == 0x34) { cout<<"small"<<endl; } // int b=0x00000018; cout<<sizeof(b)<<endl;//4 cout<<b<<endl; printf("%x\n",(b& 0x000000ff)<<24);// b一个16进制由4位二进制表示,24表示向左 //移6个0 // 如果右移或者左移的位数>=该数据的位数 // b << 32 // 实际移动的位数= 32 mod 该数据位数 =0 // b >> 36 // 实际移动的位数= 36 mod 该数据位数 =4 printf("%x\n",(a & 0xFF000000)>>24 | (a & 0x00FF0000)>>8 | (a & 0x0000FF00)<<8 | (a & 0x000000FF)<<24); return 0; }