如何获取java中二进制字符串的设置位的所有位置?

how to get all the positions of the set bits of a binary string in java?

例如,如果二进制字符串是 10100010,那么程序必须 return 第 1、3 和 7,即 1 的位置。

以下是您要查找的代码,请注意正则表达式从第零位开始。

String regex = "[1]"; 
String data = "10100010"; 
Matcher m = Pattern.compile(regex).matcher(data);
while(m.find())
{
System.out.println(m.group() + "  => " + (m.start()+1) );
}

两个选项:

  1. 将其转换为integer/long(如果可能)然后每次移动一位并检查它是否为1。例如:

    String str = "10100010";
    Integer x = Integer.valueOf(str);
    int len = str.length();
    while (x != 0) {
        if (x & 0x1 == 1) {
            System.out.println(len);
        }
        len--;
        x >>= 1;
    }
    
  2. 按索引扫描字符串并检查其值是否为 1:

    for (int i = 0; i < str.length(); i++) {
        if (str.chatAt(i) == '1') {
            //print
        }
    }
    
 char[] str="10100010".toCharArray();
        for(int i=0;i<str.length;i++){
            if(str[i]=='1'){
                int setBit=1;
                setBit+=i;
                System.out.println(setBit+"th");
            }
        }