java - 以 byte[knownsize] 为单位存储 2 位状态的长度

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

最佳答案

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

byte myByte = 0;

并像这样存储它:

myPool[0] = myByte;

请记住,当您存储字节数 1 时,其二进制表示形式将类似于 000000012看起来像 00000010 .

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

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

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

关于java - 以 byte[knownsize] 为单位存储 2 位状态的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12463983/

相关文章:

c - 将用户确定的坐标分配给嵌套数组

language-agnostic - 选择最不可能出现在真实数据中的魔术字节

python - 为什么我不能在 Python 中读取超过 16 个字节的 JPEG 文件?

Java- FileWriter/BufferedWriter - 附加到文本文件的末尾?

ios - 数组索引超出范围跳过功能

ios - 如何覆盖核心数据中的数据?如何解决Core Data中的重复数据?

Javascript变量类型(字节)

java - 如何在java android中构造多个对象和JSON数组

java - android的安全随机算法

java - 如何过滤字符串/列表?