如何在C中将UTF-8字符转换为二进制

时间:2016-03-29 06:37:51

标签: c utf-8 binary

我无法获取UTF-8字符的十进制值,然后将它们转换为二进制(类似于12 = 0b110)。例如,如何将"ン"转移到其二进制"11100011 10000011 10110011"

我知道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;
}

1 个答案:

答案 0 :(得分:1)

如果您需要UTF-8表单的二进制表示,则只需逐位打印字节 如果需要字符的二进制表示,则将其转换为UTF-32格式,然后转换为二进制格式。

另见:
UTF-8, UTF-16, and UTF-32
https://gist.github.com/antonijn/9009746
Conversion of Char to Binary in C