Java 到位集的1和0的大字符串
我有一个非常大的字符串(64个字符),包含1和0。 样本-10011111111010100111010111001010010101110001011111111110111110001000 我所要做的就是将其转换为包含相同位置的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,
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;
}