OriginalGriff
Много причин!
1) потому что вы извлекаете цифры в неправильном порядке.
Если я введу "1a3", то ваш цикл сначала извлечет "3", затем "a", а затем "1".
Вам нужно сначала работать с самой значащей цифрой, а не с самой маленькой, или перевернуть вывод, прежде чем печатать его.
Подсказка: если вы работаете с конца binary
вместо фронта он мог бы работать лучше.
2) потому что оператор "%" возвращает целое число, а не символ.
3 в целочисленном значении-это не то же самое, что '3' символьное значение, и когда вы приводите целое число к значению char, оно не изменяет его: оно оставляет его как значение 3 в переменной char. Это не то же самое, что "3" , который имеет значение 0x33: ASCII - Википедия[^]
3 значение в символе-это то, что называется "управляющим кодом", называемым "ETX", и оно=s используется для "кадрирования" данных.
Подсказка: удалите цитаты из ваших случаев и повторите попытку:
case 0:
strcat(binary,"0000");
break;
case 1:
strcat(binary,"0001");
break;
...
Вам нужно будет что-то сделать с " а " до "Ф", но я оставлю это вам.
Предложение: Всегда добавить
default
К
switch
поэтому сделайте что-нибудь разумное, когда вы получаете значение, которое вы не разрешили: распечатайте его с сообщением об ошибке, например r.
3) потому что
x % 10
он не дает вам шестнадцатеричную цифру: он дает вам десятичную цифру. Также,
x / 10
отбрасывает не шестнадцатеричную цифру, а десятичную.
Подсказка: попробуйте использовать 16 вместо 10 или извлечь шестнадцатеричную цифру, добавив ее 0x0f.
4) потому что
scanf("%d", ...)
не читает шестнадцатеричное число:
строка формата scanf - Википедия[
^]
Подсказка: нет никакого кода формата для "чтения шестнадцатеричного числа": либо прочитайте десятичное число и преобразуйте его в двоичное, либо прочитайте строку и проверьте ее перед преобразованием в числовое значение.
Честно говоря, вы должны были заметить большинство из них довольно быстро для себя: если бы вы использовали отладчик, чтобы увидеть, что происходит, вам было бы легче.
Я настоятельно рекомендую вам научиться использовать отладчик в вашей системе - он может позволить вам просматривать и контролировать ваш код во время его выполнения, включая изучение и изменение значений переменных. Это самый мощный инструмент, который у вас есть, и вы, вероятно, потратите больше времени на тестирование и исправление своего кода, чем на его написание!
Если вы не знаете, как использовать отладчик, то Google поможет - найдите Название вашей IDE и "отладчик", и вы найдете массу информации!