我有一个字节数组:
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中“制作”字节。
最佳答案
字节实际上是一种原始数据类型,例如 int
,而不是一个对象,例如 String
。它们存储 -128 到 127 之间的数字(包含 -128 和 127)。您可以像这样创建一个:
byte myByte = 0;
并像这样存储它:
myPool[0] = myByte;
请记住,当您存储字节数 1
时,其二进制表示形式将类似于 00000001
。 2
看起来像 00000010
.
您最大的挑战是将其中四个值 (A C G T) 打包到一个字节中。最好的选择是使用四个运算符:
-
&
,这是按位与。例如,您可以使用它只让底部两位通过。 -
|
,这是按位或。您可以使用它将新位组合到您正在构建的现有字节中。 -
<<
,这是左移。它将值“向左”移动一定数量的位置,相当于乘以 2 的幂。 -
>>
,这是右移。它将值“右”移动一定数量的位置,相当于除以 2 的幂。
希望有所帮助,如果这是一项作业,祝你好运!
关于java - 以 byte[knownsize] 为单位存储 2 位状态的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12463983/