在byte [知识化]中存储一个2位状态的长度

时间:2012-09-17 17:02:53

标签: java bytearray byte

我有一个字节数组:

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中“制作”字节。

1 个答案:

答案 0 :(得分:2)

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

byte myByte = 0;

并将其存储起来:

myPool[0] = myByte;

请记住,当您存储字节编号1时,其在二进制中的表示将类似于000000012看起来像00000010

您面临的最大挑战是将这些值中的四个(A C G T)打包成一个字节。您最好的选择是使用四个运营商:

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

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