ASCII码和字符转换

1 前言

  本文是基于《编码》、《穿越计算机的迷雾》两部著作进行读后整理的记录性博客。对书中较为重要的内容进行归纳整理进行二次创作,略去了繁琐的讲述细节,力求简明扼要。


编码:一种由若干符号和规则组成的系统,用来向计算机表述指令。

2 正文

2.1 字符编码

  正如我们在前面内容中的介绍一样,对于计算机我们知道它具备存储器能够存储二进制比特信息。但细细一想,我们不禁会产生诸多疑惑。例如,既然计算机存储的都是二进制比特信息,那我们的文本、音视频等多种格式的文件是如何在计算机中存储的呢?计算机为什么能够 “记住” 这些不同类型的信息呢?

  数字计算机中的存储器唯一可以存储的是比特,因此如果要想在计算机上处理信息,就必须把它们按位存储。通过先前的学习,我们已经掌握了如何用比特来表示数字和机器码。现在我们面临的一大挑战就是如何用它来存储文本(本文我们以文本文件为例进行介绍,音视频等文件类似)。

  为了将文本表示为数字形式,我们需要构建一种系统来为每一个字母赋予一个唯一的编码。这和我们前面介绍的一种人机沟通的方式类似,我们要想计算机 “记住” 这些属于我们人类认知的知识,必需定义一种规范——一种双方都能理解的规则。

  简而言之,所有由符号所表示的字母和数字都需要编码。具有这种功能的系统被称为字符编码集(CodedCharacter Set),系统内的每个独立编码称为字符编码(Character Codes)。

这里的编码和我们前面介绍计算机指令时,通过助记符标记指令便于人类记忆相反。我们需要将我们日常语言中的各种字符转换为计算机能够理解的二进制代码,比如我们想要计算机知道我们输入的是字母 A,我们约定 A 即为编码数值 065,也即用数值代表文字。但需要注意的是数字本身也是一种文本,也需要进行编码,计算机不知道数字对它们来说意味着什么(简单来说它们只能识别电信号)。

  了解了这种思想之后,我们便可以开始实现编码实现字符转换。首先要解决的第一个问题是:构成这些编码究竟需要多少比特?

  如果每个设计计算机的人都构造自己的编码系统,并且独立使用,那么文件的互传互通将困难重重。显而易见的是,我们需要一套统一的规范的编码标准。

其实,早期发展中是会存在不同公司使用不同的标准,但历史证明,统一规范才是正道。

  幸运的是,这种标准已经存在并且被广泛使用,它被称为美国信息交换标准码(AmericanStandard Code for InformationInterchange),简称为ASCII 码,发音很像 ASS-key。从 1967 年正式公布至今,它一直是计算机产业中最重要的标准。

  ASCII 码是 7 位编码,它的二进制取值范围为 0000000~1111111,对应于十六进制就是 00h~7Fh。下表列出了其中 32 个字符及相应的十六进制编码(完整对应关系可以查看:ASCII_百度百科 (baidu.com))。

  有了这种编码方式,我们就可以将字符串转换成 ASCII 码。例如:I am 12 years old.,转换后用十六进制数表示为:49 20 61 6D 20 31 32 20 79 65 61 72 73 20 6F 6C 64 2E。

  ASCII 码对英文字符与二进制之间的关系做了统一的规定,作为 7 位编码 ASCII 码一共规定了 128 个字符。但随之而来的问题是:英语用 128 个符号编码就够了,但是用来表示其他语言,128 个符号显然是不够的。不同国家有着自己的语言系统,也需要这样一套编码方式。显然,如果各个国家自己用自己的,那互通又成了一个繁琐的问题。

  业界一直有一个目标,那就是建立一个独一无二的字符编码系统,它可以用于世界上所有语言文字,从 1988 年开始,几大著名计算机公司合作研究出一种用来替代 ASCII 码的编码系统,取名为 Unicode(统一化字符编码标准)。相对于 ASCII 的 7 位编码,Unicode 采用了 16 位编码,每一个字符需要 2 个字节。也就是说 Unicode 的字符编码范围为 0000h~FFFFh,总共可以表示 65,536 个不同字符。全世界所有的人类语言,尤其是经常出现在计算机通信过程中的语言,都可以使用同一个编码系统,而且这种系统还具备很高的扩展性。

  Unicode 编码其实并不是从零开始设计的,例如前 128 个字符编码——即 0000h~007Fh——与 ASCII 码是一致的。全世界很多标准也被一同收录在 Unicode 中。Unicode 编码整合了部分之前的编码,并进行扩充。

  对于 Unicode 来讲,它唯一的问题,就是它改变了字符与存储空间之间 “单字符,单字节” 的等价对应关系。采用 ASCII 编码方式存储的著作《怒火之花》,其所占据的存储空间约为 1 MB。而如果采用 Unicode 编码,约占 2 MB。为了使编码系统兼容,Unicode 在存储空间上付出了相应的代价。

  随着后续的发展,Unicode 也逐步演化出 UTF-8、UTF-16 等,这里就不展开叙述。

对这部分内容感兴趣的可以查阅阮一峰老师的博客:字符编码笔记:ASCII,Unicode 和 UTF-8 - 阮一峰的网络日志 (ruanyifeng.com)


3 小结

  ASCII 码和字符转换篇介绍了编码的发展以及产生,介绍了ASCII 编码和 Unicode 编码两种编码方式。为了精简内容删减了部分较为详细的书写,仅作为整理总结。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容

  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    极客学院Wiki阅读 7,247评论 0 3
  • 不知不觉易趣客已经在路上走了快一年了,感觉也该让更多朋友认识知道易趣客,所以就谢了这篇简介,已做创业记事。 易趣客...
    Physher阅读 3,418评论 1 2
  • 双胎妊娠有家族遗传倾向,随母系遗传。有研究表明,如果孕妇本人是双胎之一,她生双胎的机率为1/58;若孕妇的父亲或母...
    邺水芙蓉hibiscus阅读 3,701评论 0 2
  • 晴天,拥抱阳光,拥抱你。雨天,想念雨滴,想念你。 我可以喜欢你吗可以啊 我还可以喜欢你吗可以,可是你要知道我们不可...
    露薇霜凝阅读 1,216评论 1 2