我正在编写一个处理基因序列的程序,我想将每个核苷酸存储在一个字节中,其中每个位代表遗传字母表中的一个字母A,C,G,T
(显然只有一半的位会被使用)。
我的编码如下:
A = 0b1000
C = 0b0100
G = 0b0010
T = 0b0001
R = 0b1010
Y = 0b0101
N = 0b0000
这里,R
是嘌呤,可以代表A
or G
,Y
是嘧啶 ( C
or T
),并且N
可以代表任何一个字母。
typedef
在 C 中使用and定义这种格式的最佳方法是什么enum
?我想定义一种类型,允许我按名称将字母分配给变量,例如
typedef ... nucleotide_t;
nucleotide_t x[] = {G, A, T, T, A, C, A};
编辑:感谢您的输入。我绝对有理由不想要字符串,但感谢您的建议。确实,从逻辑上讲,N
应该是,但对于我的应用程序来说,将其表示为以上都不是0b1111
更有意义。
请注意,我确实知道如何完成这项工作,但我不会经常打破 ol' C,我宁愿寻找最优雅的解决方案。我想如果我想保留NUL
字节,那么我可以在0b10000
任何地方添加到我的代码中。
我认为两种可能的方法是一个enum
或一些#define
宏。然而,枚举是int
,我需要一个char
,那么宏是更好的解决方案吗?