gpt4 book ai didi

c - 用 typedef 和 enum 在 C 中表示 DNA 字母表

转载 作者:太空宇宙 更新时间:2023-11-04 05:00:14 27 4
gpt4 key购买 nike

我正在编写一个处理基因序列的程序,我想将每个核苷酸存储在一个字节中,其中每个位代表基因字母表 A,C,G,T 中的一个字母(显然只有一半的比特会被使用)。

我的编码如下:

A = 0b1000
C = 0b0100
G = 0b0010
T = 0b0001
R = 0b1010
Y = 0b0101
N = 0b0000

这里,R是嘌呤,可以代表AGY是嘧啶(C or T), N 可以代表任意一个字母。

使用 typedefenum 在 C 语言中定义这种格式的最佳方式是什么?我想定义一个类型,允许我按名称将字母分配给变量,例如

typedef ... nucleotide_t;
nucleotide_t x[] = {G, A, T, T, A, C, A};

编辑:感谢您的输入。我绝对有理由不想要字符串,但感谢您的建议。的确,从逻辑上讲,N 应该是 0b1111,但对于我的应用程序,将其表示为以上都不是确实更有意义。 p>

请注意,我确实知道如何使这项工作有效,但我不会经常打破 ol' C,我宁愿寻找最优雅的解决方案.我想如果我想保留 NUL 字节,那么我可以将 0b10000 添加到我的所有代码中。

我认为两种可能的方法是 enum 或一些 #define 宏。然而,枚举是 int 而我需要一个 char,那么宏是更好的解决方案吗?

最佳答案

这样做怎么样:

typedef enum NUC{
N = 0,
T = 1,
G = 2,
C = 4,
Y = 5,
A = 8,
R = 10
}nucleotide_t;

关于c - 用 typedef 和 enum 在 C 中表示 DNA 字母表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17908656/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com