大小端判斷及轉換
阿新 • • 發佈:2022-04-01
#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; } elseif(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[]) { inta=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; }