我有一个字节数组,例如:
0 240 167 43 200 209 57 213 1 89 182 103 60 43 0 0
我现在想读取此Byte数组的前3位:
这是我将其读取为字节数组的方式:
val bytes = "0 240 167 43 200 209 57 213 1 89 182 103 60 43 0 0".getBytes("utf-8")
现在从这个Byte数组中获得了什么,我应该能够一点一点地读取整个序列。例如,前3位代表某个值,接下来的4位代表另一个值,类似。我对这些值的含义有规则,但我只是不知道如何对自己拥有的字节数组进行这种位操作!
是否有任何入门指南?
答案 0 :(得分:2)
How to convert a Seq[Byte] into an Array[Boolean] representing each bit in Scala
这是将单个字节转换为位数组的方法。 您只需调用即可将字节数组转换为位
val bits = bytes.flatMap(byte2Bools)
然后获得前3位为
bits.take(3)
答案 1 :(得分:1)
您尝试过bytes(0) & 0xE0
来使用最左边的3位
(0xE0是11100000二进制掩码)
...尝试使用(255 & 0xE0) >> 5
将它们转换为整数
您可能需要第一个字节的前3位:(bytes(0) & 0x07)
(0x07是00000111二进制掩码)