gpt4 book ai didi

java - 将各个位写入 ByteArrayOutputStream

转载 作者:行者123 更新时间:2023-12-01 14:30:53 25 4
gpt4 key购买 nike

好的,所以我想要的是将字节写入 dataouptustream 并将该输出流发送出去。这一切我都可以做得很好。我遇到的问题是如何在字节内写入各个位,例如:

我想将LSB(0)写为1,然后剩余的1-7位应该是100的值。或者也许我希望前2个LSB(0-1)为3,剩余的为是 5。这是我迄今为止的尝试(到目前为止我还没有真正测试过这段代码)。

ByteArrayOutputStream baos=new ByteArrayOutputStream();
DataOutputStream daos=new DataOutputStream(baos);
//LSB should be 0, the remaining should be the value 50
daos.writeByte(50 >>> 1);
//2 LSBs should be 2 (10) and the remaining should be 100
daos.writeByte(Integer.parseInt(Integer.toBinaryString(2) + Integer.toBinaryString(100)));
daos.close();
message = baos.toByteArray();

我走在正确的道路上吗?有没有一个非常简单/直接的方法来做到这一点?我必须做很多这样的事情,所以我需要真正了解如何将这些字节操作为我需要的任何内容。

最佳答案

如果我正确理解这个问题,你应该能够做这样的事情:

byte a = 2;
byte b = 100;
byte lsb = 2;

int c = a + (b << lsb);

其中 lsb 是您要为第一个数字 (a) 保留的 LSB 数量,其余的可用于 b

当然,如果您为 a 保留 8 位中的 2 位,则意味着 b 必须使用少 6 位(即 b < 64)。所以 100 的例子不太有效,因为你的结果不再是一个字节。 100 需要 7 位,因此总共为 9 位。

关于java - 将各个位写入 ByteArrayOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16863726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com