Ну, у меня была такая же проблема ... поэтому я нашел эту тему
Мне кажется, ответ от пользователя: "pmg" не всегда работает.
unsigned int int_to_int(unsigned int k) {
return (k == 0 || k == 1 ? k : ((k % 2) + 10 * int_to_int(k / 2)));
}
Причина: двоичное представление хранится в виде целого числа. Это довольно ограничено.
Представьте себе преобразование десятичной дроби в двоичную:
dec 255 -> hex 0xFF -> bin 0b1111_1111
dec 1023 -> hex 0x3FF -> bin 0b11_1111_1111
и вы должны хранить это двоичное представление как десятичное число.
Я думаю, решение от Энди Финкенштадта самое близкое к тому, что вам нужно
unsigned int_to_int(unsigned int k) {
char buffer[65]; // any number higher than sizeof(unsigned int)*bits_per_byte(8)
return itoa( atoi(k, buffer, 2) );
}
но все равно это не работает для больших чисел.
Не удивительно, так как вам, вероятно, не нужно преобразовывать строку обратно в десятичную. Это имеет меньше смысла. Если вам нужно двоичное число, как правило, вам нужно где-нибудь текст , поэтому оставьте его в строковом формате .
просто используйте itoa ()
char buffer[65];
itoa(k, buffer, 2);