仅将char压缩为两位

时间:2018-12-02 10:43:24

标签: c

我试图弄清楚如何将char(通常为1个字节)压缩为2位。

例如,我有一个char数组,其中包含一个像这样的DNA分子序列:"ACGGTTTT"

它只能包含ATGC

现在,我像这样解码字符:A=0,C=1,G=2,T=3,所以有了这个字符数组:"01223333"

我的问题是我如何仅将每个字符压缩为两位,这意味着0=00,1=01,2=10,3=11并以二进制形式得到此结果:"11111111 10100100"
注意结果是从右到左。

1 个答案:

答案 0 :(得分:1)

将DNA序列打包为2位或4位编码的数据流并不困难,但是从序列中访问单个值变得笨拙且效率低下。

如果您的目标是压缩序列以便存储或传输,则应仅使用zlib提供的经典压缩算法(例如 gzip )或更高级的压缩算法(例如 > LZMA LZ4 ZStandard