我正在使用java没有将一些基本数据保存到流中。

我正在使用 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还有其他原因吗?

© 版权声明
THE END
喜欢就支持一下吧
点赞146赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容