【问题标题】:Is there a method to covert an array of 1's and 0's to an array of bytes?有没有一种方法可以将 1 和 0 的数组转换为字节数组?
【发布时间】:2020-01-26 22:42:56
【问题描述】:

我有一个包含 1 和 0(我也可以使用布尔值)的 96 元素数组,我用它来存储游戏中的成就(如果未解锁,则为 0,如果解锁,则为 1),我想将其编码为 Base64(到通过将所有成就数据导出到一个短字符串中来“保存”游戏)。我想先将数组转换为byte[],以便可以在该数组上使用encodeToString(byte[] src) 方法来输出字符串。

我该怎么做?有没有什么方法可以把一个 8 位的子数组转换成一个字节?这不一定要高效或漂亮。我只是为了好玩而制作这个游戏。

【问题讨论】:

    标签: java arrays byte bit


    【解决方案1】:

    我猜你应该使用不同的数据结构,比如BitSet,这样可以避免直接使用位运算符。

    BitSet achievements = new BitSet(96);
    achievements.set(41);
    byte[] data = achievements.toByteArray();
    

    记住:没有必要重新发明轮子!

    【讨论】:

    • 请注意,如果最高有效位设置为false,则结果数组的大小太小;您可能需要重新调整(我希望该代码会在答案中)。
    • 对不起,他如何设置只有布尔/二进制操作的 BitSet 的值?如何构建该值以便他可以将其传递给 set() 方法?没看懂。
    • 我的意思是如果数组的最后 2 个元素被标记,值应该是 3 (=1+2)?有没有办法自动计算(如果它是正确的解释)?
    • 如果 BitSet#set(1)BitSet#set(0) 被调用,值 3 将在最低有效字节中,对吗?你问的是这个吗?
    猜你喜欢
    • 2021-03-13
    • 2020-10-05
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 2021-07-16
    相关资源
    最近更新 更多