-1

重複の可能性:
「unsignedtemp:3」とはどういう意味ですか

私はiOSアプリを書いていますが、いくつかのレガシープレーンオレCに対処する必要があります。

typedef struct {
    int32_t tid;
    int32_t pos;
    uint32_t bin:16, qual:8, l_qname:8;
    uint32_t flag:16, n_cigar:16;
    int32_t l_qseq;
    int32_t mtid;
    int32_t mpos;
    int32_t isize;
} bam1_core_t;

私の質問にはuint32_t bin:16, qual:8, l_qname:8;、32ビット整数のある種のビットベクトルサブフィールドに表示されるこれらのフィールドにアクセスする方法を教えてください。

ありがとう、
ダグ

4

2 に答える 2

4

これらはビットフィールドです。構造体の他のフィールドと同じようにアクセスします。コロンの後の数字は、そのフィールドを格納するために使用されるビット数を定義します。たとえば、qual:8手段qualは 0 から 255 までの値 (のみ) を保持できます。

これは特別なことだと付け加えておく:0 必要があります。これは、現在のアイテム (int、uint32_t など) からビット フィールドを割り当てる必要がないことを意味します。次のビット フィールドは、新しい基礎となるストレージ ユニットから取得されます。

于 2012-06-25T22:18:22.153 に答える
2

これらはビットフィールドであり、次のように参照します。

bam1_core_t.binまたはbam1_core_t.qualなど。

これらのビットフィールドを使用すると、データをより緊密にパックできます。の右側の数字は:、左側の識別子に関連付けられた場所に割り当てるビット数を指定します。

これがCで表示されるのは、structsまたはunionsだけです。

于 2012-06-25T22:17:38.060 に答える