-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と1の*文字列*を意味していますか? – Biffen
あなたは最初のバイトをとり、その最高のビットを得てそれを印刷し、次に高いビットなどを続けます。次に、2番目のバイトを取り出して同じことをします。 –
たとえば、utf-8に関するウィキペディアの記事をチェックし、アルゴリズムを実装します。 @ JoachimPileborg:彼はutf-8コードのバイナリ表現ではなく、Unicodeコードポイントに変換したい。 「バイナリ表現」はutf-8ではありません。 – ikrabbe