0

私はバイトの配列を持っています:

byte[] myPool = new byte[100];

そして、4文字からなる文字列を格納したいと思います。DNAと考えてください:

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

これらの文字の文字列をバイトとして解析および挿入するにはどうすればよいですか?コードを探しているのではなく、本当に読むべきものを探しています。

String example = "CGGGGT" //011010101011 aka 1707 aka 0x6AB
myPool.insert(example); //assume empty pool at start

次に、myPool [0]を0x0006にし、レコードをmyPool [2]から開始します(最大0xFFFFの長さインジケーターを保持できるようにするためです。これも2つの別々のバイトに入力する方法がわかりません。配列)

myPool [2]は0x006Aで、myPool [3]は0x00B0である必要があります(最後の4ビットは0000になります)。

ですから、私が本当に理解していないのは、Javaでバイトを「作成」する方法です。

4

1 に答える 1

2

intバイトは実際には、のようなオブジェクトではなく、のようなプリミティブデータ型Stringです。それらは-128から127までの数を格納します。次のように作成できます。

byte myByte = 0;

そして、次のように保存します。

myPool[0] = myByte;

バイト番号を格納する1と、2進数での表現はのようになります000000012のようになります00000010

最大の課題は、これらの値の4つ(ACGT)を1バイトにパックすることです。最善の策は、次の4つの演算子を使用することです。

  • &、これはビット単位のANDです。たとえば、これを使用して、下の2ビットのみを通過させることができます。
  • |、これはビットごとのORです。これを使用して、構築中の既存のバイトに新しいビットを組み合わせることができます。
  • <<、これは左シフトです。値を「左」に特定の数の位置だけ移動します。これは、2の累乗を掛けることに相当します。
  • >>、これは右シフトです。値を特定の数の位置だけ「右」に移動し、2の累乗で割ることに相当します。

それがお役に立てば幸いです。これが課題である場合は、頑張ってください。

于 2012-09-17T17:14:33.560 に答える