C ++ преобразование двоичной строки в целое число или сравнение 2 строк, чтобы найти количество различий - PullRequest
0 голосов
/ 08 октября 2019

Я использовал набор битов для преобразования 2 чисел в строковое представление двоичных чисел. У меня проблемы с выяснением того, как определить количество различий, основанных на этом (мне нужно было преобразовать целое число в двоичное по другим причинам в коде). В любом случае, вот пример того, что я пытаюсь выполнить:

1110 and 1100 should return 1, 1111 and 0000 should return 4, 1110 and 1110 should return 0;

У меня есть первое число, хранящееся в двумерном векторе пар, например, grid [i] [j] .second. 2-е число - это переданный аргумент, поэтому он называется binaryObserv. Я обнаружил, что есть функция to_ulong, встроенная в bitset, но именно она работает с моей строкой, которую я использовал bitset для преобразования ранее в моей программе. Я мог бы сохранить 2-е число как целое число и вычислить, если я сделал исключительное число или число 2, а затем преобразовал в двоичное, я мог бы перебрать результат, чтобы посчитать число множества 1. Однако я не могу преобразовать первый (строку) обратно в целое число. Любая помощь очень ценится.

1 Ответ

0 голосов
/ 08 октября 2019

Ах, ха, нвм разобрался. Я пошел с моей первой попыткой сравнения строк (не возвращая int). Вот кому интересно:

for(uint i = 0; i < grid.size(); i++){
      for(uint j = 0; j < grid[i].size(); j++){
        int acc = 0;
          cout << "num in grid: " <<  grid[i][j].second<< endl;
        for(uint k = 0; k < (grid[i][j].second).length(); k++){
          if((grid[i][j].second).at(k) != binaryObserv.at(k)){
            acc++;
          } 
        }
        cout << "num of differences: " << acc << endl;
      }
    } 


...