用固定字节的数据表示随机多个十六进制的0x00,0x01

例如:有9个16进制的数(只能是0x00和0x01)0x00,0x01,0x00,0x00,0x01,0x01,0x01,0x01,0x01,将这9个数用二个字节的二进制位表示则是11110010,00000001或者(01001111,10000000)。(可以是固定的字节,如下面代码中的是6字节)

具体的代码如下所示:

QByteArray Handle::getOccupyRecord()
{
    QByteArray data;
    QByteArray newData;
    data.resize(9);
    newData.resize(6);       //用6个字节来表示9个16进制的数
    //初始化data和newData
    for(int i = 0; i < 9; i++)
    {
        data[i] = 0x00;
    }
    for(int i = 0; i < 6; i++)
    {
        newData[i] = 0x00;
    }
    data[0] = 0x00;
    data[1] = 0x01;
    data[2] = 0x00;
    data[3] = 0x00;
    data[4] = 0x01;
    data[5] = 0x01;
    data[6] = 0x01;
    data[7] = 0x01;
    data[8] = 0x01;
    //初始化newData的个数
    int a = 0;     
    //控制移位的位数(8位)
    int j = 0;  
    for (int i = 1; i < 9 + 1; ++i)
    {
        //(01001111,10000000)第一个数放在二进制的最高位
        //newData[a] = newData[a] << 1 | data.at(i-1);

        //(11110010,00000001)第一个数放在8位的最低位
        newData[a] = newData[a] | data.at(i-1)<

 

你可能感兴趣的:(C++)