1

QVariant::DataPtrプライベートで、昨日はQBitArray仕事をしていました。data_ptr()を返す関数がありますが、DataPtr&この関数をいつどのように使用するかわかりません。返されるデータをファイルに書き込んでST2で開くと、次のように表示されますSOH

int main()
{
    QBitArray bit(8);
    bit[5] = true; //--> I tried bit[7] = true; result is `SOH` still
    QFile file("out");
    file.open(QIODevice::WriteOnly);
    QDataStream outs(&file);
    outs << bit.data_ptr();
    file.close();
    return 0;
}

SOHの意味はわかっていますが、フレーム区切りのStart Of Header場合は(1byte)と定義されています。0x01最初に書いたので、カプセル化された生データ(バイナリでは00000001)かもしれないbit[7]=true;と思いました。しかし、ST2でファイルを開いてみたところ、まだ表示されていません。だから私は混乱しています。bit.data_ptr()bitQBitArraybit[5]=true;SOH
ここに画像の説明を入力してください

4

2 に答える 2

1

DataPtrは、データ構造への単なるポインタです。構造はプライベートになっているので、何にも使用しないでください。ただし、ポインタを使用して2バイト配列を区別することができます。QBitArray :: operator <<()を使用して、ビット配列をデータストリームに書き込みます。

于 2012-11-13T11:19:07.413 に答える
1

data_ptrへのポインタDataです。たとえば、data_ptrQbitArrayをchar*に変換するために使用できます。

auto data = bit.data_ptr()->data(); 

data[0]のサイズも(bitここでは8です)、その他はの値ですbit。例えば:

QBitArray bit(16);
bit[5] = true;
bit[14] = true;
auto data = bit.data_ptr()->data(); 

ビットの値は0x4020です。したがってdata[0]、は16、data[1]は0x20、data[2]は0x40です。

于 2020-01-25T12:09:28.823 に答える