gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 20:33:03 24 4
gpt4 key购买 nike

我正在寻找一种有效的方法来轻松地将 BitSet 转换为二进制字符串。假设其通常长度为数千位。

例如,让我们有这个:

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

这是期望的结果:

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

我有一些一般的想法(流等),但可能有一些明显的标准方法我只是缺少。

最佳答案

所以这是迄今为止我尝试过的最有效的方法:

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();
}

关于java - 如何有效地将 BitSet 转换为二进制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34748006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com