Там нет прямого спецификатор формата для этого в языке Си. Хотя я написал этот быстрый фрагмент python, чтобы помочь вам понять процесс шаг за шагом, чтобы сворачивать ваши собственные.
#!/usr/bin/python
dec = input("Enter a decimal number to convert: ")
base = 2
solution = ""
while dec >= base:
solution = str(dec%base) + solution
dec = dec/base
if dec > 0:
solution = str(dec) + solution
print solution
Разъяснение:
Декабрь = вход («Введите десятичное число для преобразования:») - запрашивать у пользователя числового ввода (есть несколько способов сделать это в C через зсап например)
база = 2 - указать, наша база 2 (двоичный)
решение = «» - создать пустую строку, в которой мы будем конкатенировать наше решение
то время как разл> = базовый: - в то время как наш номер больше, чем основание введенной
решение = Str (реш% base) + solution - получить модуль числа до базы и добавить его в начало нашей строки (мы должны добавить числа справа налево, используя метод деления и остатка). функция str() преобразует результат операции в строку. Вы не можете конкатенировать целые числа со строками в python без преобразования типов.
декабрь = декабрь/базовая - разделить десятичное число на базе в Preperation, чтобы сделать следующий по модулю
, если декабрь> 0: решение = ул (разл) + раствор - если ничего, что осталось, добавить его в начало (это будет 1, если что-нибудь)
решения для печати - печать окончательного числа
Я вижу переполнение буфера, если для функции binrep() недостаточно места для значения, которое оно печатает. И, говоря о горьком (но давно) опыте, материал, сбрасывающий фронт массива, может быть очень неприятным для отладки! –
Да, это будет хлопотно - если ваш ints более 32 бит, вы должны убедиться, что вы увеличите SZ в соответствии с требованиями. – paxdiablo
Исправлено для предотвращения переполнения буфера. – paxdiablo