我正在使用 java ByteBuffer 将一些基本数据保存到流中。一种情况是我必须通过互联网将“布尔列表”从一台机器传输到另一台机器,所以我希望缓冲区尽可能小。
我知道这样做的正常方法是使用这样的缓冲区:
public final void writeBool(boolean b) throws IOException {
writeByte(b ? 1 : 0);
}
public final void writeByte(int b) throws IOException {
if (buffer.remaining() < Byte.BYTES) {
flush();
}
buffer.put((byte) b);
}
public boolean readBool(long pos) {
return readByte(pos) == 1;
}
public int readByte(long pos) {
return buffer.get((int)pos) & 0xff;
}
这是一种将布尔值转换为字节并存储到缓冲区的方法。但是我在徘徊,为什么不只是在缓冲区中放一点,这样一个字节就可以代表八个布尔值,对吧?
代码可能是这样的?但是java没有writeBit函数。
所以我认为这样做的唯一方法是“将八个布尔值存储到一个字节中并写入”,例如((0x01f >>> 4) & 0x01) == 1 以检查第五个布尔值是否为真。但如果我能得到一个字节,为什么不让我得到一点呢?
java不能让我们操作bit还有其他原因吗?
© 版权声明
本站下载的源码均来自公开网络收集转发二次开发而来,
若侵犯了您的合法权益,请来信通知我们1413333033@qq.com,
我们会及时删除,给您带来的不便,我们深表歉意。
下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,访问及下载者下载默认同意本站声明的免责申明,请合理使用切勿商用。
THE END
暂无评论内容