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中重新计算它吗?
答案 0 :(得分:2)
我可以使用Cuint变量在julia中替换它吗?
是的,对齐方式是一样的。如果确实需要这些值,可以使用位掩码选择所需的位。
作为旁注,StrPack包可能对处理复杂的struct [de]序列化感兴趣(尽管我认为它没有内置的bitfield支持)。
答案 1 :(得分:1)
您可以使用julia'a按位操作函数(&
,>>
等)提取单个位。您可以定义方便函数,如is_bin(x) = (x & 0x01) > 0
。