2016-03-29 52 views
-3

UTF-8文字の小数点値を取得して、それをバイナリ(12 = 0b110のようなもの)に変換するのに問題があります。たとえば、"ン"をバイナリ"11100011 10000011 10110011"に転送するにはどうすればよいですか?C言語でUTF-8文字をバイナリに変換する方法

私は、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

あなたは0と1の*文字列*を意味していますか? – Biffen

+3

あなたは最初のバイトをとり、その最高のビットを得てそれを印刷し、次に高いビットなどを続けます。次に、2番目のバイトを取り出して同じことをします。 –

+1

たとえば、utf-8に関するウィキペディアの記事をチェックし、アルゴリズムを実装します。 @ JoachimPileborg:彼はutf-8コードのバイナリ表現ではなく、Unicodeコードポイントに変換したい。 「バイナリ表現」はutf-8ではありません。 – ikrabbe

答えて

関連する問題