У меня есть от 1 до 4 байтов(зависит от первого ),и мне нужно что бы программа вывела их , но не виде строки самого байта(типа [d1]), а именно вывести сам байт, что система сама поняла что это за символ
UPD походу это видимо не возможно, меня интересовал сам вывод в консоль много байтовых символов через c видимо не возможен. Я в этом правда не уверен, поэтому вопрос все еще открыт.....
Не понял. У байта нет "строки" - это восемь бит данных, а их интерпретация зависит от зиллиона условий. Простейший случай - это putchar(c);
Но если это скажем юникод - то получится лажа, потому что в юникоде один символ - два байта.
CityCat4, я говорю виде примера ,типо тот же формат %x переведет байт виде строки HEX, и тому подобное, проще говоря мне нужно что бы система сама прочитала комбинацию байтов(зависит от кодировки) и показала необходимый симвов
типо тот же формат %x переведет байт виде строки HEX
Никто ничего никуда не переведет :) printf("0x%X", byte);
покажет байт по формату hex (это полезно, если байт - набор битовых флагов). А вот printf("%c", byte);
напечатает байт в виде символа в текущей кодовой таблице (man setlocale). По умолчанию локаль С, то есть стандартная ASCII-кодовая таблица. Если хотите интерпретацию в другой локали - ее нужно явно задать.
CityCat4, про устоновку локали я слышал , просто было интересно , если в самом языке возможность выводить в консоль символы больше одного байта , ибо есть возможность вода такого символа (конечно сам язык c получает его не корректно)
Popou, в utf-8 все сложно. Один символ может занимать от 1 до 6 байт, поэтому реализовать вывод символов будет совсем непросто. Нужно будет изучить стандарт UTF-8, вычислять из скольких байт состоит текущий символ, чтобы вывести именно его, а не кусок мусора
Saboteur, это я изучал более или менее, поэтому и спрашиваю как вывести эти байты, в символ, при чем количество байтов символе если я не ошибаюсь описывается в первом байте
Устанавливаешь в консоли нужную кодировку и выводишь вычисленное количество символов через стандартный printf
Не твоя программа переводит символы во что-то. Это делает консоль. Точнее терминал
Терминал может работать с разными стандартами консоли (кроме кодировки, есть еще правила обработки управляющих символов, включая перенос строки, смену цвета, и др)