16進制數據拆分


轉:8位16位32位數據的拆分與合並程序

https://blog.csdn.net/qq_31811537/article/details/71760334

 

拆分

//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);

 

 

 

 

也可以%:取余

16進制的0x123456 % 0x100 結果等於 0x56, 這點與十進制是一樣的。

商為0x1234,

再對0x1234%0x100,結果等於0x34,

商為0x12,

再對0x12%0x100,結果為0x12.

 

quint32 dataValue = 0x123456;

 
         
        quint16 dataA = dataValue/0x100;
        quint8 data1= dataValue % 0x100;
 
         
        quint16 dataB = dataA/0x100;
        quint8 data2 = dataA%0x100;
 
         
        quint16 dataC = dataB/0x100;
        quint8 data3 = dataB%0x100;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM