码迷,mamicode.com
首页 > 其他好文 > 详细

6,又一道经典的微软题

时间:2016-08-19 22:10:48      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

一、题目描述


 

The Orchid Pavilion(兰亭集序) is well known as the top of “行书”in history of Chinese literature. The most fascinating sentence is "Well I know it is a lie to say that life and death is the same thing, and that longevity and early death make no difference Alas!"(固知一死生为虚诞,齐彭殇为妄作).By counting the characters of the whole content (in Chinese version),the result should be 391(including punctuation). For these characters written to a text file,please select the possible file size without any data corrupt.

二、分析


 

  如果只是论一个汉字占用的字节数,那么 UTF-8 占用3个字节, UTF-16 占用2个字节。但是如果存储文本的话,需要在文本使用 EF BB BF 三个字节表示使用 UTF-8 编码,使用 FE FF 表示使用 UTF-16 编码。

 
  UTF-16 固定表示两个字节表示一个字符,不管是字母还是汉字; UTF-8 使用 1- 3 个字节表示一个字符
 
  • 0xxxxxxx 一个字节兼容ASCII,能表示127个字符
  • 110xxxxx 10xxxxxx.如果是这样的格式,则把两个字节当一个字符
  • 1110xxxx 10xxxxxx 10xxxxxx 如果是这种格式则是三个字节当一个字符
所以,UTF-8的空间是根据保存的内容不同而不同。如果保存的汉字多,使用 UTF-16 占用字符数双倍的空间,使用 UTF-8 占用字符数三倍的空间;如果保存的英文字母多,使用 UTF-16 使用字符数双倍的空间,使用 UTF-8 使用字符数相同的空间。
 
所以,不同情况下有不同的选择,这也是这么多字符集和编码格式存在的原因之一。
  
  不过,也有人说UTF-8编码的时候,占用空间为: 字母数 + 汉字数*3 + 3
 
  最后,本题答案:2 * 391 + 2 = 784 bytes in UTF-16 encoding
          3 * 391 + 3 = 1176 bytes in UTF-8 encoding

6,又一道经典的微软题

标签:

原文地址:http://www.cnblogs.com/letgo/p/5789057.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!