平成24年度 春期 応用情報技術者試験 午前 問4
テクノロジ/基礎理論Unicode文字列をUTF-8でエンコードすると,各文字のエンコード結果の先頭バイトは2進表示が0又は11で始まり,それ以降のバイトは10で始まる。16進表示された次のデータは何文字のUnicode文字列をエンコードしたものか。 CF 80 E3 81 AF E7 B4 84 33 2E 31 34 E3 81 A7 E3 81 99
出典:平成24年度 春期 応用情報技術者試験 午前 問4
- ア9
- イ10
- ウ11
- エ12
正解:ア
解説
UTF-8では,先頭バイトが0xxxxxxxなら1バイト文字,110xxxxxなら2バイト文字,1110xxxxなら3バイト文字の先頭であることを示します。与えられたバイト列を先頭バイトのパターンで区切ると,CF80(2バイト,先頭11001111),E381AF(3バイト),E7B484(3バイト),33(1バイト),2E(1バイト),31(1バイト),34(1バイト),E381A7(3バイト),E38199(3バイト)の9文字に分割でき,合計9文字となります。
選択肢ごとの解説
- ア正しい。バイト列を先頭バイトのパターンで区切ると9文字になります。
- イ誤り。区切りを1つ多く数えた場合の値であり,実際には9文字です。
- ウ誤り。1バイト文字と多バイト文字の区切りを誤ると11文字と数えてしまいますが,正しくは9文字です。
- エ誤り。全バイトを1文字ずつ数えた場合の値(16バイト相当)に近い誤りで,実際には9文字です。