Первой задачей было бы преобразовать char *
в int
, что вы сказали, что можете.Итак, вот следующая часть, т.е. получение двоичного представления.Для получения двоичного представления любого типа данных использование Оператор сдвига является одним из лучших способов.И вы можете получить его, выполнив сдвиг для типа данных, а затем выполнив Побитовое И , то есть &
с 1
.Например, если n
является целым числом
int n = 47;
for (int i = 0; i < 32; i++)
{
/* It's going to print the values of bits starting from least significant. */
printf("Bit%d = %d\r\n", i, (unsigned int)((n >> i) & 1));
}
Таким образом, используя оператор сдвига, решение вашей проблемы будет выглядеть примерно так:
void fun(int n1, int n2)
{
int i, argv1[32], argv2[32];
for (i = 0; i < 32; i++)
{
argv1[i] = ((unsigned int)n1 >> i) & 1;
argv2[i] = ((unsigned int)n2 >> i) & 1;
}
}
Вы должны быть осторожны с битомпорядок, т.е. какой бит хранится в каком индексе массива.