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 的长度指示符,我也不知道如何在大批)

myPool[2] 应为 0x006A,myPool[3] 应为 0x00B0(最后 4 位为 0000)。

所以我真正不明白的是如何在java中“制作”字节。

4

1 回答 1

2

字节实际上是一种原始数据类型,例如int,而不是对象,例如String。它们存储一个介于 -128 和 127 之间的数字,包括 128 和 127。您可以像这样创建一个:

byte myByte = 0;

并像这样存储它:

myPool[0] = myByte;

请记住,当您存储字节数时1,它的二进制表示形式如下所示000000012会看起来像00000010

您最大的挑战是将其中四个值 (ACGT) 打包到一个字节中。您最好的选择是使用四个运算符:

  • &,这是一个按位与。例如,您可以使用它仅让底部两位通过。
  • |,这是一个按位或。您可以使用它将新位组合到您正在构建的现有字节中。
  • <<,这是一个左移。它将值“向左”移动一定数量的位置,相当于乘以 2 的幂。
  • >>,这是一个右移。它将值“向右”移动一定数量的位置,相当于除以 2 的幂。

希望对您有所帮助,如果这是一项任务,祝您好运!

于 2012-09-17T17:14:33.560 回答