将字符串转换为java

时间:2016-07-21 09:10:24

标签: java string bitvector

我想根据字符位值(用户指定)将字符串转换为相应的位向量。我正在处理基因组字符串,其中我只有4个字符,即A,G,C,T。我想用java中的以下位值来表示它们

A = 01
G = 11
C = 10
T = 00

现在给出一个字符串“AGGT”,那么它的相应比特值应该是01111100.我试过这样做:

 BitSet A = new BitSet(2);
 BitSet G = new BitSet(2);
 BitSet C = new BitSet(2);
 BitSet T = new BitSet(2);
 A.set(01);
 G.set(00);
 C.set(11);
 T.set(10);

String p = "AGGT";
BitSet bb = new BitSet();
for(int i = 0, n = p.length() ; i < n ; i++) { 
   bb.set(p.charAt(i))      
}

我做错了什么?如何以正确的方式做到这一点。?

1 个答案:

答案 0 :(得分:0)

正如@Thomas所指出的,BitSet.set(int)并不像你显然希望的那样工作。

public void set(int bitIndex)
     

将指定索引处的位设置为true。

所以:G.set(00)没有将G的两位设置为0:它将G的第二位(位置1)设置为{ {1}}。

但是你不能使用你最初创建的位集:如果在字符串中遇到true,你实际上是将第66位(位置65)设置为{{1} },因为65是char文字A的整数值。

最简单的方法就是在循环中进行切换:

true

(将位设置为'A'并非必要;但它只是更明确一些。)