8位16位32位資料的拆分與合併程式

2021-06-28 15:23:54 字數 1190 閱讀 7949

拆分

16位拆成兩個8位

u16 data16 = 0x1234;

u8 data8_h,data8_l;

data8_h = (u8)(data16 >>8);

data8_l = (u8)data16; 

32位拆成4個8位

方法一:

u32 data32 = 0x12345678;

u8 data8_1,data8_2,data8_3,data8_4;

data8_1 = (u8)(data32 >> 24);

data8_2 = (u8)(data32 >> 16);

data8_3 = (u8)(data32 >> 8);

data8_4 = (u8)data32;

方法二:

u32 data32 = 0x12345678;

u8 data8_1,data8_2,data8_3,data8_4;

u8 *pa;    //定義指標

pa = (u8 *)(&data32);        //將32位位址,強制轉換為8位位址

data8_1 = *((char *)pa+3);

data8_2 = *((char *)pa+2);

data8_3 = *((char *)pa+1); 

data8_4 = *((char *)pa);

合併

2個8位合併成1個16位

u8 data8_h = 0x12;

u8 data8_l = 0x34;

u16 data16;

data16 = ((u16)data8_h << 8) |(u16)(data8_l));

4個8位合併成1個32位

u8 data8_1 = 0x12;

u8 data8_2 = 0x34;

u8 data8_3 = 0x56;

u8 data8_4 = 0x78;

u32 data32;

data32 = ((u32)data8_1 << 24) |((u32)data8_2 << 16) | ((u32)data8_3 << 8) | ((u32)data8_4);

8位16位32位資料的拆分與合併程式

拆分 16位拆成兩個8位 u16 data16 0x1234 u8 data8 h,data8 l data8 h u8 data16 8 data8 l u8 data16 32位拆成4個8位 方法一 u32 data32 0x12345678 u8 data8 1,data8 2,data8 3...

mul和div指令(8位,16位,32位)

無符號乘法指令,預設運算元與eax相乘 這裡只說32位,其他與下面的div類似 格式 mul 運算元 運算元只有乙個運算元與eax相乘,結果共有16位 這裡的16位是16進製制數 高8位放在edx中,低8位放在eax中 執行命令下面的命令,此時,ecx為00000005,eax為ffff fff9 ...

常用資料轉換,8位轉16位 32位函式,複製就能用

下面包含8 轉 32,32轉8,8轉16,16轉8,16轉32,32轉16等微控制器內常用的資料型別轉換,直接複製就可使用,感覺好用可以加關注,以後會經常更新一些常規好用的小 8位轉32位 len 資料長度 data 資料 說明 剩餘位補0 unsigned int data u32 10 void...