Я полагаю, что вы должны сделать домашнее задание, так что вот мое решение. :)
Я только сейчас пытался написать конвертер ascii-to-binary + binary-ascii в C, по совпадению. Двоичный файл для ascii был довольно прост с функцией strtol () и всем, и мой код для преобразования символа (который фактически является int), был следующим:
void chartobinf(int c, FILE* out)
{
size_t n = 8*sizeof(unsigned char);
while (n-- > 0)
fputs(((c >> n) & 1) ? "1" : "0", out);
}
Это печатает символ (изменяет параметр и размер типов в соответствии с вашими потребностями) в правильном порядке (который, на мой взгляд, является наибольшим значением в первую очередь), в отличие от многих других решений.
Мне особенно нравится это решение, потому что оно очень короткое. С другой стороны, он не сохраняет значение в виде строки или чего-либо подобного.
Редактировать: Я думаю, можно также заменить вызов fputs()
на
fputc(((c >> n) & 1) ? '1' : '0', out);
Может быть микросекунды быстрее? Незнайка.