Python基礎 二進位和字元編碼

來源:互聯網
上載者:User

標籤:轉化   中文   亂碼問題   統一   基於   info   inf   拉丁字母   資料   

二進位定義

  二進位是計算技術中廣泛採用的一種數制。位元據是用0和1兩個數位來表示的數。它的基數為2,進位規則是“逢二進一”,借位規則是“借一當二”,由18世紀德國數理哲學大師萊布尼茲發現。當前的電腦系統使用的基本上是二進位系統,資料在電腦中主要是以補碼的形式儲存的。電腦中的二進位則是一個非常微小的開關,用“開”來表示1,“關”來表示0。

二進位與十進位轉換

  我們已經發現,二進位的第n位代表的十進位值都剛好遵循著2的n次方這個規律

字元編碼

  通過二進位的知識,大家已經知道電腦只認識二進位,生活中的數字要想讓電腦理解就必須轉換成二進位。十進位到二進位的轉換隻能解決電腦理解數位問題,那麼文字要怎麼讓電腦理解呢?

  於是我們就選擇了一種曲線救國的方式,既然數字可以轉換成十進位,我們只要想辦法把文字轉換成數字,這樣文字不就可以表示成二進位了嗎?

  約定了一個表,把文字和數字對應上,這張表就相當於翻譯,我們可以拿著一個數字來對比對應表找到相應的文字,反之亦然。

ASCII碼

  假如我們就已經有這麼一張表了

  

  ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,並等同於國際標準ISO/IEC 646。

  由於電腦是美國人發明的,因此,最早只有127個字母被編碼到電腦裡,也就是大小寫英文字母、數字和一些符號,這個編碼錶被稱為ASCII編碼,比如大寫字母 A的編碼是65,小寫字母 z的編碼是122。後128個稱為擴充ASCII碼。

  那現在我們就知道了上面的字母符號和數字對應的表是早就存在的。那麼根據現在有的一些十進位,我們就可以轉換成二進位的編碼串。

GBK和GB2312

  顯然,對於我們來說能在電腦中顯示中文字元是至關重要的,然而剛學習的ASCII表裡連一個偏旁部首也沒有。所以我們還需要一張關於中文和數字對應的關係表。之前我們已經看到了,一個位元組只能最多表示256個字元,要處理中文顯然一個位元組是不夠的,所以我們需要採用兩個位元組來表示,而且還不能和ASCII編碼衝突,所以,中國制定了GB2312編碼,用來把中文編進去。

Unicode

  Unicode應運而生。Unicode把所有語言都統一到一套編碼裡,這樣就不會再有亂碼問題了。

  Unicode標準也在不斷髮展,但最常用的是用兩個位元組表示一個字元(如果要用到非常偏僻的字元,就需要4個位元組)。現代作業系統和大多數程式設計語言都直接支援Unicode。

  現在,捋一捋ASCII編碼和Unicode編碼的區別:

  ASCII編碼是1個位元組,而Unicode編碼通常是2個位元組。

  字母A用ASCII編碼是十進位的65,二進位的01000001;

  字元0用ASCII編碼是十進位的48,二進位的00110000;

  漢字“中”已經超出了ASCII編碼的範圍,用Unicode編碼是十進位的20013,二進位的01001110 00101101。

  你可以猜測,如果把ASCII編碼的A用Unicode編碼,只需要在前面補0就可以,因此,A的Unicode編碼是00000000 01000001。

UTF-8

  本著節約的精神,又出現了把Unicode編碼轉化為“可變長編碼”的UTF-8編碼。UTF-8編碼把一個Unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文字母被編碼成1個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組。如果你要傳輸的文本包含大量英文字元,用UTF-8編碼就能節省空間的。

  

 

Python基礎 二進位和字元編碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.