我有一个非常大的字符串(64 个字符),其中包含 1 和 0。
样本 - 1001111111101010011101101011100101001010111000101111011110001000
我想要的只是将其转换为 BitSet var,其中包含相同位置的 1 和 0
我正在使用该功能 -
private static BitSet fromString(String binary) {
return BitSet.valueOf(new long[] { Long.parseLong(binary, 2) });
}
并且已经经历过——Java 位集示例 https://stackoverflow.com/questions/9333681/java-bitset-example我实际上已经解决了这个问题,那就是我的第 64 位为 1 并且该函数抛出了数字格式异常
我尝试了很多其他转换,但无法使其正常工作
如有任何帮助,我们将不胜感激
谢谢!!!
由于您有一个仅包含 0 和 1 的字符串,因此您可以简单地执行此操作,而无需转换为 Long,只需使用String#charAt()
and 位集#set() http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html#set%28int%29。例如,像这样:
private static BitSet fromString(String binary) {
BitSet bitset = new BitSet(binary.length());
for (int i = 0; i < binary.length(); i++) {
if (binary.charAt(i) == '1') {
bitset.set(i);
}
}
return bitset;
}
或者像通常使用的那样使用 r-l 方向:
private static BitSet fromString(String binary) {
BitSet bitset = new BitSet(binary.length());
int len = binary.length();
for (int i = len-1; i >= 0; i--) {
if (binary.charAt(i) == '1') {
bitset.set(len-i-1);
}
}
return bitset;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)