java - 从 BitSet 转换为字节数组

标签 java bitset

我选择了这个将 BitSet 转换为字节数组的示例。

public static byte[] toByteArray(BitSet bits) {
    byte[] bytes = new byte[bits.length()/8+1];
    for (int i=0; i<bits.length(); i++) {
        if (bits.get(i)) {
            bytes[bytes.length-i/8-1] |= 1<<(i%8);
        }
    }
    return bytes;
}

但是我在论坛上看到,通过这种方法我们不会得到所有的位,因为每次计算我们都会丢失一位。这是真的?需要修改上面的方法吗?

最佳答案

不,没关系。该帖子的评论与帖子中的其他 代码片段相关,从字节数组转换为BitSet。诚然,我会使用更多的空格。

此外,这可能会导致一个比所需长度更长的数组。数组创建表达式可以是:

byte[] bytes = new byte[(bits.length() + 7) / 8];

这为所需的位数提供了空间,但仅此而已。基本上它等同于“除以 8,但总是四舍五入。”

关于java - 从 BitSet 转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6197411/

相关文章:

c++ - 挤奶牛,解决方案说明

c++ - 在标准 C++ 中创建动态位​​集?

c++ - std::bitset<size> 中的可变位长度

Java将8位数字转换为10位数字

java - 从下拉列表中随机选择?

java - 开关打开时显示通知

java - Spring Security - 如何动态更改用户角色?

c++ - 将 bitset<64> 转换为 quint8

java - 我可以将java返回的hashmap存储在机器人框架变量中吗?

java - 如何使用Spring MVC更新当前用户数据?