🍼

マルチバイトについて調べた

2022/08/28に公開

全然わからなくて調べただけの雑メモです。
目についた方はマサカリをお願いします。

マルチバイトとは

00000000 ~ 11111111の256通りの1バイトで表現できないときに使う。

ASCIIだと0(00000000) ~ 127(1111111)の範囲で半角英字や半角記号などを表現している。
他の文字コードだと128 ~ 255の範囲でほかの文字を表現する。
さすがにこれだけだと表現しきれないので複数組み合わせて文字を表現する。
それをマルチバイトという。

UTF-8を例にする

最初の128文字(00000000 ~ 1111111)はASCIIと同じ (1とかaとか!とか)。
マルチバイトで表現する文字は2バイトで表現できるものもあるし、4バイトで表現するものもある。

つまりUTF-8は2~4バイトの可変長で表現される。

たとえば「あ」はUTF-8だと以下のように表現できる。

void Main()
{
    var str = "あ";
    var bytes = Encoding.UTF8.GetBytes(str);
    var hex = BitConverter.ToString(bytes);
    
    Console.WriteLine(bytes); // Byte[3] 227 129 130
    Console.WriteLine(hex); // E3-81-82
}

参考記事

https://snaka72.hatenadiary.org/entry/20100710/SUMMARY_ABOUT_JAPANESE_CHARACTER_CODE

Discussion