Как преобразовать большие десятичные числа в двоичные без использования itoa?

#c

Вопрос:

Я работал над программой, которая преобразует UTF-16 в UTF-8, но у меня возникли проблемы с преобразованием больших чисел, таких как 14846106, в двоичные. Все двоичные преобразователи, которые я нашел в Интернете, ломаются, если десятичное число состоит из 4 цифр или более. Я использовал itoa, работал безупречно, но проблема возникла, когда я попытался скомпилировать программу в Linux. Итак, существуют ли какие-либо другие альтернативы (кроме snprintf, который даже не способен преобразовываться из десятичного в двоичный)?

Комментарии:

1. en.wikibooks.org/wiki/C_Programming/stdlib.h/itoa и geeksforgeeks.org/implement-itoa есть реализации itoa, которые вы можете использовать

2. itoa преобразует двоичный код в десятичный (ascii). Если вы хотите преобразовать десятичное число ascii в двоичное, вы можете использовать atoi, strtoll или sscanf. Чтобы преобразовать десятичное число UTF-8 или UTF-16 в двоичное, сначала необходимо преобразовать в ascii (преобразование различных цифр в цифры ascii).

Ответ №1:

Простой рекурсивный двоичный алгоритм.

 to_binary(unsigned x) {
  if (x > 1) {
    to_binary(x/2);
  }
  putchar(x%2   '0');
}
 

Комментарии:

1. Это преобразует двоичный код в двоичный код ascii. Десятичная дробь не используется (хотя из вопроса OPs неясно, что они подразумевают под «десятичной» и «двоичной»).