У меня возникли проблемы с получением десятичных значений символов UTF-8, а затем их преобразование в двоичное (что-то вроде 12 = 0b110). Например, как я могу передать "ン"
в свой двоичный код "11100011 10000011 10110011"
?Как преобразовать символ UTF-8 в двоичный код в C
Я знаю, что UTF-8 использует несколько байтов. Я попытался распечатать его каждые 8 бит слева направо. Для ASCII я использую способ ниже, чтобы распечатать его, но для UTF-8, что я могу использовать?
char asc[10];
while ((c = getchar()) != EOF)
{
int a = c;
asc = DecimalToBinary(a);
for (i = 7; i >= 0; i--)
{
printf("%c",*(asc + i));
}
}
char *DecimalToBinary (int num) {
static char binary[] = {'0', '0','0', '0','0', '0','0', '0'};
int i = 0;
while (num != 0) {
if (num % 2 == 0)
{
binary[i++] = '0';
}
else {
binary[i++] = '1';
}
num = num/2;
}
return binary;
}
Вы имеете в виду * строка * нулей и единиц? – Biffen
Вы берете первый байт, получаете его самый высокий бит и печатаете его, а затем следующий старший бит и т. Д. Затем вы берете второй байт и делаете то же самое. –
, например, проверьте статью wikipedia об utf-8 и реализуйте алгоритм. @JoachimPileborg: Он хочет преобразовать в кодовую точку Юникода, а не двоичное представление кода utf-8. «Бинарное выражение» не является utf-8. – ikrabbe