Как я могу разделить свой вывод (двоичный #) на две группы, разделенные одним пробелом в C (без массивов)

У меня возникли трудности с форматированием выходного двоичного числа на языке C. Я пытаюсь разделить выходной номер на две группы по 8 цифр, которые будут разделены одним пробелом.

это мой принтф:

printf("%016ld in Binary\n", decNumtoBin);

Это мой вывод 0000001000101011

Я хотел выглядеть вот так 00000010 00101011


person MrYosuko    schedule 17.03.2020    source источник
comment
Используйте деление, чтобы получить первую группу, и оператор модуля, чтобы получить вторую группу. Затем выведите эти два числа с пробелом между ними.   -  person ikegami    schedule 17.03.2020
comment
printf(%08ld %08ld в двоичном формате\n, decNumtoBin/100000000, decNumtoBin%100000000);   -  person Boris Lipschitz    schedule 17.03.2020
comment
Другой вариант — просто преобразовать значение в его двоичное представление в виде строки и вставить разделитель по вашему выбору (пробел ' ') каждые 8 ​​символов, дополненных до общей ширины 16 бит.   -  person David C. Rankin    schedule 17.03.2020
comment
Большое спасибо @BorisLipschitz, все сработало!   -  person MrYosuko    schedule 17.03.2020
comment
Спасибо за ваш комментарий @DavidC.Rankin, вы имеете в виду в printf?   -  person MrYosuko    schedule 17.03.2020
comment
Аналогично Преобразовать шестнадцатеричный код в двоичный из аргументов командной строки C. Просто еще один вариант вывода с меньшим количеством делений и по модулю. (и он будет обрабатывать полные 64-битные значения без проблем)   -  person David C. Rankin    schedule 17.03.2020
comment
Спасибо @DavidC.Rankin за вашу помощь. Теперь я понимаю..   -  person MrYosuko    schedule 17.03.2020
comment
@BorisLipschitz, пожалуйста, опубликуйте свой ответ в разделе ответов, чтобы я мог пометить свой вопрос как отвеченный. Благодарю вас!   -  person MrYosuko    schedule 11.04.2020
comment
Конечно, сделано.   -  person Boris Lipschitz    schedule 11.04.2020


Ответы (1)


Публикация как «ответ», как запрошено в комментариях. Чтобы понять, почему это работает, помните, что на самом деле вы печатаете не двоичное, а десятичное число. И все, что вам нужно сделать, это разделить его на 2 части, что можно легко сделать, используя простое деление и модуль.

printf("%08ld %08ld in Binary\n", decNumtoBin/100000000, decNumtoBin%100000000);
person Boris Lipschitz    schedule 11.04.2020