如何在C中将UTF-8字符转换为二进制
我很难获取UTF-8字符的十进制值,然后将它们转换为二进制,比如12=0b110。例如,我如何转帐ン 到它的二进制11100011 1000011 10110011 我知道UTF-8使用多个字节。我试着从左到右每8位打印一次。对于ASCII,我使用下面的方法打印出来,但是对于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
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;
}