情報に関する理論 (全37問中15問目)

No.15

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

分類

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

正解

解説

16進データをバイト(8ビット)単位で2進数に変換して、文字列の先頭バイトを示す"0"または"11"ではじまるバイトがいくつあるかでデータに含まれる文字数を数えます。

各バイトデータの中で上位4ビット分だけわかれば判別が可能ですので、18バイトあるデータの上位4ビットをひとつずつ確認していくのが確実です。
  • [C]→1100→先頭バイト
  • [8]→1000
  • [E]→1110→先頭バイト
  • [8]→1000
  • [A]→1010
  • [E]→1100→先頭バイト
  • [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-2018 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop