我无法获取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;
}
答案 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