微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何有效地将BitSet转换为二进制字符串?

如何解决如何有效地将BitSet转换为二进制字符串?

因此,这是到目前为止我尝试过的最有效的方法

private static class FixedSizeBitSet extends BitSet {
    private final int nbits;

    public FixedSizeBitSet(final int nbits) {
        super(nbits);
        this.nbits = nbits;
    }

    @Override
    public String toString() {
        final StringBuilder buffer = new StringBuilder(nbits);
        IntStream.range(0, nbits).mapToObj(i -> get(i) ? '1' : '0').forEach(buffer::append);
        return buffer.toString();
    }
}

或使用其他流的其他方式:

@Override
public String toString() {
    return IntStream
            .range(0, nbits)
            .mapToObj(i -> get(i) ? '1' : '0')
            .collect(
                    () -> new StringBuilder(nbits),
                    (buffer, characterToAdd) -> buffer.append(characterToAdd),
                    StringBuilder::append
            )
            .toString();
}

解决方法

我正在寻找一种有效的方法,如何轻松地将a转换BitSet为二进制字符串。我们说它的通常长度将是数千位。

例如,让我们有这个:

BitSet bits = new BitSet(8);
bits.set(1);
bits.set(3);

这是预期的结果:

String result = toBinaryString(bits);
// expected: result = "01010000"

我总体上有一些想法(信息流等),但是可能我缺少一些明显的标准方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。