我试图弄清楚如何将char(通常为1个字节)压缩为2位。
例如,我有一个char数组,其中包含一个像这样的DNA分子序列:"ACGGTTTT"
它只能包含A
,T
,G
,C
现在,我像这样解码字符:A=0,C=1,G=2,T=3
,所以有了这个字符数组:"01223333"
。
我的问题是我如何仅将每个字符压缩为两位,这意味着0=00,1=01,2=10,3=11
并以二进制形式得到此结果:"11111111 10100100"
?
注意结果是从右到左。
答案 0 :(得分:1)
将DNA序列打包为2位或4位编码的数据流并不困难,但是从序列中访问单个值变得笨拙且效率低下。
如果您的目标是压缩序列以便存储或传输,则应仅使用zlib
提供的经典压缩算法(例如 gzip )或更高级的压缩算法(例如 > LZMA , LZ4 或 ZStandard 。