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

我正在寻找一种有效的方法,如何轻松地将a转换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();

}

以上是 如何有效地将BitSet转换为二进制字符串? 的全部内容, 来源链接: utcz.com/qa/399300.html

回到顶部