応用情報技術者平成24年春期 午前問4

問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
  • 9
  • 10
  • 11
  • 12

分類

テクノロジ系 » 基礎理論 » 情報に関する理論

正解

解説

UTF-8は、1文字を1~6バイトの可変長で表現する文字コードです。文字の先頭バイトは"0"または"11"で始まるので、16進データをバイト(8ビット)単位で2進数に変換し、"0"または"11"で始まるものを数えることでデータに含まれる文字数を求めます。
  • C → 1100 ⇒ 先頭バイト
  • 8 → 1000
  • E → 1110 ⇒ 先頭バイト
  • 8 → 1000
  • A → 1010
  • E → 1110 ⇒ 先頭バイト
  • B → 1011
  • 8 → 1000
  • 3 → 0011 ⇒ 先頭バイト
  • 2 → 0010 ⇒ 先頭バイト
  • 3 → 0011 ⇒ 先頭バイト
  • 3 → 0011 ⇒ 先頭バイト
  • E → 1110 ⇒ 先頭バイト
  • 8 → 1000
  • A → 1010
  • E → 1110 ⇒ 先頭バイト
  • 8 → 1000
  • 9 → 1001
もうお気づきかもしれませんが、わざわざ2進数に変換しなくても先頭ビットが"0"になるのは16進表記で0~7、先頭が"11"になるビットは16進表記でC~Fなので、16進表記の先頭がこれらに該当すれば文字の先頭バイトであると判断することができます。

 CF 80 E3 81 AF E7 B4 84 33 2E 31 34 E3 81 A7 E3 81 99

先頭バイトは9つなので、データに含まれる文字数は9文字です。
© 2010-2024 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop