Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中将UTF-8字符转换为二进制_C_Utf 8_Binary - Fatal编程技术网

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

如何在C中将UTF-8字符转换为二进制,c,utf-8,binary,C,Utf 8,Binary,我很难获取UTF-8字符的十进制值,然后将它们转换为二进制,比如12=0b110。例如,我如何转帐ン 到它的二进制11100011 1000011 10110011 我知道UTF-8使用多个字节。我试着从左到右每8位打印一次。对于ASCII,我使用下面的方法打印出来,但是对于UTF-8,我可以使用什么 char asc[10]; while ((c = getchar()) != EOF) { int a = c; asc = DecimalToBinary(a); f

我很难获取UTF-8字符的十进制值,然后将它们转换为二进制,比如12=0b110。例如,我如何转帐ン 到它的二进制11100011 1000011 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));
    }
}

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

取第一个字节,获取其最高位并打印,然后是下一个最高位,依此类推。然后取第二个字节并执行相同的操作。例如,查看维基百科关于utf-8的文章并实现算法@JoachimPileborg:他想要转换成unicode码点,而不是utf-8码的二进制表示。二进制表达式不是utf-8。请学习如何创建。现在还不清楚你想要什么。例如,创建一个MCVE并向我们展示该程序的输入和输出。@Biffen它实际上是。@Chenyu请澄清您想要的是字符UTF-8编码的二进制,还是代码点的二进制。
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;
}