1. 程式人生 > 其它 >大小端判斷及轉換

大小端判斷及轉換

#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; }