Мой метод устанавливает бит в каждом элементе массива int.Хотя программа работает со случаем, где строка str = "11111 ... 111" (все биты равны 1), однако, в случае, если строка str = "100 ... 000" (63 нулевых числа) (первоебит равен 1, а остальные 0) проблема возникает, мой массив int {0,0,0,1} должен быть {0,0,1,0} Пожалуйста, дайте мне решение с моим кодом, если вашИдея лучше, скажите мне, чтобы я мог решить проблему в ближайшее время.
int arr[4]={0};
void convert(string str)
{
int length = str.length();
for (int i = length - 1; i >= 0; i--)
{
if (str[i] == '1')
{
int pos = 3 - i / 32;
int k;
k = (length - i - 1) % 31;
//if (i == 0)
//{
//pos = 2- length/32;
//}
arr[pos] = (1 << k) | arr[pos];
}
}
}
Если строка имеет 1000 ... 00 (32 0 числа), массив int должен быть {0,0,1, 0} Если строка имеет 1000 ... 00 (63 0 числа), массив int должен быть {0,1,0,0}