在编写C

时间:2016-02-14 09:42:05

标签: julia

typedef struct {
uint32_t is_bin:1, is_write:1, is_be:1, is_cram:1, dummy:28;
int64_t lineno;
kstring_t line;
char *fn, *fn_aux;
union {
    BGZF *bgzf;
    struct cram_fd *cram;
struct hFILE *hfile;
    void *voidp;
} fp;
htsFormat format;
} htsFile;

如何处理Julia中htsFile的位域部分? 如果我不关心特定值uint32_t is_bin:1, is_write:1, is_be:1, is_cram:1, dummy:28;,我可以使用Cuint变量在julia中重新计算它吗?

2 个答案:

答案 0 :(得分:2)

  

我可以使用Cuint变量在julia中替换它吗?

是的,对齐方式是一样的。如果确实需要这些值,可以使用位掩码选择所需的位。

作为旁注,StrPack包可能对处理复杂的struct [de]序列化感兴趣(尽管我认为它没有内置的bitfield支持)。

答案 1 :(得分:1)

您可以使用julia'a按位操作函数(&>>等)提取单个位。您可以定义方便函数,如is_bin(x) = (x & 0x01) > 0