Java 到位集的1和0的大字符串

Java 到位集的1和0的大字符串,java,string,bitset,Java,String,Bitset,我有一个非常大的字符串(64个字符),包含1和0。 样本-10011111111010100111010111001010010101110001011111111110111110001000 我所要做的就是将其转换为包含相同位置的1和0的位集变量 我正在使用函数- private static BitSet fromString(String binary) { return BitSet.valueOf(new long[] { Long.parseLong(binary,

我有一个非常大的字符串(64个字符),包含1和0。 样本-10011111111010100111010111001010010101110001011111111110111110001000

我所要做的就是将其转换为包含相同位置的1和0的位集变量 我正在使用函数-

private static BitSet fromString(String binary) {
        return BitSet.valueOf(new long[] { Long.parseLong(binary, 2) });
}
并且已经经历了- 我实际上已经解决了这个问题,我的第64位是1,函数抛出了一个数字格式异常 我尝试过很多其他的转换,但都没能成功 这里的任何帮助都将不胜感激
谢谢

因为您有一个字符串,只包含0和1,所以只需使用
string\charAt()
和,您就可以轻松地执行该操作,而无需强制转换为Long。例如,像这样:

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

64位用
推送它。您是否尝试过这种转换:?如果您使用的是java8,您可以执行
Long.parseUnsignedLong()
,它应该可以正常工作。。
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;
}