zoukankan      html  css  js  c++  java
  • 6,又一道经典的微软题

    一、题目描述


    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
  • 相关阅读:
    js正则表达式
    js遍历对象属性
    C# 带Cookies发送请求
    C# Cookies设置和读取
    C# ref 和 out 的使用
    jq 禁用复选框 和输入框
    C++学习之嵌套类和局部类
    C++学习之this指针
    C++学习之运算符重载的总结
    Labview中引用,属性节点,局部变量之间的区别
  • 原文地址:https://www.cnblogs.com/letgo/p/5789057.html
Copyright © 2011-2022 走看看