数据类型转换,两个8位合成一个16位数据

#include 
#include 
using namespace std;

int main() {
    QByteArray data;
    data.resize(6);
    data[0]=0x00;
    data[1]=0x00;
    data[2]=0x40;
    data[3]=0x01;
    data[4]=0x05;
    data[5]=0x01;
    //测试实例
    uint8_t *pdata = (uint8_t *) data.data();
    uint8_t a = pdata[1];
    uint16_t b = *((uint16_t *) (pdata + 2));
    uint16_t c = *((uint16_t *) (pdata + 4));
    cout << a << endl;
    cout << b << endl;
    cout << c << endl; 

运行结果如下

数据类型转换,两个8位合成一个16位数据_第1张图片

pdata+2 : pdata指针后移两位,指向data[2],转成uint16_t形式,将包含data[2]和data[3].

 解释320如何算出来的:

数据类型转换,两个8位合成一个16位数据_第2张图片

 320=0x01<<8+0x40;就是将第一个数据放后边,将下一个数据放前面.

你可能感兴趣的:(c++,算法)