CSP-J 信息编码的表示

举报
人才程序员 发表于 2024/09/14 18:19:10 2024/09/14
【摘要】 @TOC 前言在现代计算机系统中,信息编码是确保数据准确传输和处理的基础。编码系统使得计算机能够识别、存储和交换信息。在众多编码系统中,ASCII码、GB码和字形码是几个重要的编码标准。本文将介绍这些编码系统的基本概念,展示它们的具体实现,并探讨它们在实际应用中的重要性和空间计算方法。 ASCII码ASCII(American Standard Code for Information In...

@TOC


前言

在现代计算机系统中,信息编码是确保数据准确传输和处理的基础。编码系统使得计算机能够识别、存储和交换信息。在众多编码系统中,ASCII码、GB码和字形码是几个重要的编码标准。本文将介绍这些编码系统的基本概念,展示它们的具体实现,并探讨它们在实际应用中的重要性和空间计算方法。


ASCII码

ASCII(American Standard Code for Information Interchange)是最早和最基础的字符编码系统之一。它用来表示英文字符、数字和一些特殊符号。在ASCII码中,每个字符由一个7位的二进制数表示,这使得它可以表示128个不同的字符。

ASCII码表如下:

十进制  十六进制  字符
  0       0x00      NUL (空字符)
  1       0x01      SOH (标题开始)
  2       0x02      STX (文本开始)
  3       0x03      ETX (文本结束)
  4       0x04      EOT (传输结束)
  5       0x05      ENQ (询问)
  6       0x06      ACK (确认)
  7       0x07      BEL (铃声)
  8       0x08      BS  (退格)
  9       0x09      TAB (水平制表符)
 10       0x0A      LF  (换行)
 11       0x0B      VT  (垂直制表符)
 12       0x0C      FF  (换页)
 13       0x0D      CR  (回车)
 14       0x0E      SO  (移出)
 15       0x0F      SI  (移入)
 16       0x10      DLE (数据链路转义)
 17       0x11      DC1 (设备控制1)
 18       0x12      DC2 (设备控制2)
 19       0x13      DC3 (设备控制3)
 20       0x14      DC4 (设备控制4)
 21       0x15      NAK (负确认)
 22       0x16      SYN (同步空闲)
 23       0x17      ETB (块传输结束)
 24       0x18      CAN (取消)
 25       0x19      EM  (介质结束)
 26       0x1A      SUB (替代)
 27       0x1B      ESC (转义)
 28       0x1C      FS  (文件分隔符)
 29       0x1D      GS  (组分隔符)
 30       0x1E      RS  (记录分隔符)
 31       0x1F      US  (单位分隔符)
 32       0x20      SPACE (空格)
 33       0x21      !   (感叹号)
 34       0x22      "   (双引号)
 35       0x23      #   (井号)
 36       0x24      $   (美元符号)
 37       0x25      %   (百分号)
 38       0x26      &   (和号)
 39       0x27      '   (单引号)
 40       0x28      (   (左括号)
 41       0x29      )   (右括号)
 42       0x2A      *   (星号)
 43       0x2B      +   (加号)
 44       0x2C      ,   (逗号)
 45       0x2D      -   (减号)
 46       0x2E      .   (句号)
 47       0x2F      /   (斜杠)
 48       0x30      0   (数字零)
 49       0x31      1   (数字一)
 50       0x32      2   (数字二)
 51       0x33      3   (数字三)
 52       0x34      4   (数字四)
 53       0x35      5   (数字五)
 54       0x36      6   (数字六)
 55       0x37      7   (数字七)
 56       0x38      8   (数字八)
 57       0x39      9   (数字九)
 58       0x3A      :   (冒号)
 59       0x3B      ;   (分号)
 60       0x3C      <   (小于号)
 61       0x3D      =   (等号)
 62       0x3E      >   (大于号)
 63       0x3F      ?   (问号)
 64       0x40      @   (商业符号)
 65       0x41      A   (字母A)
 66       0x42      B   (字母B)
 67       0x43      C   (字母C)
 68       0x44      D   (字母D)
 69       0x45      E   (字母E)
 70       0x46      F   (字母F)
 71       0x47      G   (字母G)
 72       0x48      H   (字母H)
 73       0x49      I   (字母I)
 74       0x4A      J   (字母J)
 75       0x4B      K   (字母K)
 76       0x4C      L   (字母L)
 77       0x4D      M   (字母M)
 78       0x4E      N   (字母N)
 79       0x4F      O   (字母O)
 80       0x50      P   (字母P)
 81       0x51      Q   (字母Q)
 82       0x52      R   (字母R)
 83       0x53      S   (字母S)
 84       0x54      T   (字母T)
 85       0x55      U   (字母U)
 86       0x56      V   (字母V)
 87       0x57      W   (字母W)
 88       0x58      X   (字母X)
 89       0x59      Y   (字母Y)
 90       0x5A      Z   (字母Z)
 91       0x5B      [   (左中括号)
 92       0x5C      \   (反斜杠)
 93       0x5D      ]   (右中括号)
 94       0x5E      ^   (脱字符)
 95       0x5F      _   (下划线)
 96       0x60      `   (重音符)
 97       0x61      a   (字母a)
 98       0x62      b   (字母b)
 99       0x63      c   (字母c)
100       0x64      d   (字母d)
101       0x65      e   (字母e)
102       0x66      f   (字母f)
103       0x67      g   (字母g)
104       0x68      h   (字母h)
105       0x69      i   (字母i)
106       0x6A      j   (字母j)
107       0x6B      k   (字母k)
108       0x6C      l   (字母l)
109       0x6D      m   (字母m)
110       0x6E      n   (字母n)
111       0x6F      o   (字母o)
112       0x70      p   (字母p)
113       0x71      q   (字母q)
114       0x72      r   (字母r)
115       0x73      s   (字母s)
116       0x74      t   (字母t)
117       0x75      u   (字母u)
118       0x76      v   (字母v)
119       0x77      w   (字母w)
120       0x78      x   (字母x)
121       0x79      y   (字母y)
122       0x7A      z   (字母z)
123       0x7B     

 {   (左花括号)
124       0x7C      |   (竖线)
125       0x7D      }   (右花括号)
126       0x7E      ~   (波浪号)
127       0x7F      DEL (删除)

GB码

GB码(Guobiao Code)是中国制定的一系列汉字编码标准,用于在计算机中表示中文字符。GB2312是最早的标准,后来被GBK和GB18030所扩展。GB2312编码可以表示简体中文字符中的6763个汉字和682个符号。GBK扩展了GB2312,支持繁体中文字符,并且包括了更多的汉字和符号。GB18030是最新的标准,兼容GBK,并且增加了对更多汉字的支持。

GB码的编码方式使得计算机能够有效地存储和处理汉字,解决了汉字在计算机中表示的问题。

字形码

字形码(Glyph Code)是用来表示字符在屏幕上的实际显示形状的编码方式。每个字符的字形由字形码指定,字形码用于控制字体和字符的外观。常见的字形码包括TrueType字体和OpenType字体。

字形码的主要作用是确保字符的显示效果符合设计要求,不同的字体和字形可以给同一个字符带来不同的视觉效果。计算机在处理文本时需要知道每个字符的字形,以便正确地渲染文本。

为什么需要这些编码

不同的编码系统满足了不同的需求:

  1. ASCII码:用于表示基础的英文字符和符号,是最早的编码系统之一。它简单而广泛使用。
  2. GB码:用于表示中文字符,解决了中文在计算机中的表示问题,使中文信息能够被计算机有效地处理。
  3. 字形码:用于控制字符的显示效果,确保文本的视觉表现符合设计要求。

空间计算

不同的编码方式占用不同的空间:

  • ASCII码:每个字符占用1字节(8位),因为它是基于7位的编码。
  • GB码:GB2312编码的每个汉字通常占用2字节。GBK和GB18030扩展了编码范围,但字符长度通常还是2字节或4字节。
  • 字形码:字形码的空间占用取决于字体的复杂程度和分辨率。一个字体文件可能会占用数百KB到几MB的空间,具体取决于包含的字符和字形的数量。如果计算一个字的字形码,则使用公式m x m / 8,其中m为行数/列数

Unicode码

Unicode 是一种字符编码标准,旨在为所有书写系统中的字符分配一个唯一的编码。它包括了从古代文字到现代语言、符号、表情符号等的广泛字符集。Unicode 的目标是使得计算机可以处理和交换文本信息而不受语言和地区的限制。

Unicode 编码方式

Unicode 支持多种编码方式,包括 UTF-8、UTF-16 和 UTF-32。以下是这三种编码方式的简要说明:

  1. UTF-8:一种可变长度的编码方式,使用 1 到 4 个字节表示一个字符。UTF-8 是互联网最常用的编码方式,具有向后兼容 ASCII 的优势。

    • 1 字节表示 ASCII 字符(范围 0-127)
    • 2 字节表示一些西欧字符(范围 128-2047)
    • 3 字节表示大多数的字符(范围 2048-65535)
    • 4 字节表示补充字符(范围 65536-1114111)
  2. UTF-16:一种可变长度的编码方式,使用 2 或 4 个字节表示一个字符。UTF-16 常用于内部表示(如在 Windows 操作系统中)。

    • 2 字节表示基本多语言平面(BMP)中的字符(范围 0-65535)
    • 4 字节表示补充平面中的字符(范围 65536-1114111)
  3. UTF-32:一种固定长度的编码方式,使用 4 个字节表示一个字符。虽然它占用的空间最大,但简化了字符的处理和计算。

    • 4 字节表示所有 Unicode 字符(范围 0-1114111)

示例 Unicode 字符

以下是几个 Unicode 字符及其编码示例:

  • 字母 A:U+0041(十六进制),在 UTF-8 中表示为 0x41
  • 汉字 “中”:U+4E2D(十六进制),在 UTF-8 中表示为 0xE4 B8 AD
  • 表情符号 “😊”:U+1F60A(十六进制),在 UTF-8 中表示为 0xF0 0x9F 0x98 0x8A

Unicode 的必要性

Unicode 的引入解决了早期字符编码系统的多种问题,包括:

  1. 字符冲突:不同编码系统可能会使用相同的编码值表示不同的字符,导致数据交换中的混乱。
  2. 缺乏全面性:早期的编码系统无法支持所有语言和符号,Unicode 提供了一个全面的字符集合。
  3. 数据交换:Unicode 使得跨平台和跨语言的数据交换变得更加可靠和一致。

空间计算

Unicode 字符的存储空间依赖于所使用的编码方式:

  • UTF-8:一个字符占用 1 到 4 个字节。
  • UTF-16:一个字符占用 2 或 4 个字节。
  • UTF-32:一个字符占用 4 个字节。

总结

编码系统是计算机处理和存储信息的基础。ASCII码、GB码和字形码各自承担了不同的角色,确保了从基础字符到复杂汉字的有效表示和显示。了解这些编码系统的工作原理和空间计算方法,有助于更好地理解计算机中的信息处理,并为编程和数据管理提供支持。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。