1. 程式人生 > >決戰Python之巔(八)

決戰Python之巔(八)

前言

今天是第一模組的最後一篇,晚上把作業交了之後還得考核,考核完成之後就可以開始第二模組啦~~
好了,廢話不多說。今天寫的是關於16進位制和字元編碼的記錄。

知識回顧

16進位制

之前我們講過二進位制和十進位制的轉換,應該還記得吧。這裡稍微複習一下:二進位制與十進位制的羈絆
除了二進位制與十進位制以外,還有八進位制和十六進位制。大家可能會想,二進位制是計算機最底層的語言,計算機只能識別這種010101,也就是說是給計算機看的語言,而十進位制是我們能看懂的語言,那麼八進位制和十六進位制是幹嘛用的呢?
在一些很古老的計算機語言中,八進位制還在使用,而我們一般用不到,基本瞭解足以。
十六進位制就比較重要了。計算機硬體是二進位制的,而十六進位制剛好是2的倍數,可以更容易表達一個命令或者資料。因為它更簡短,計算起來就比二進位制方便很多(這個計算指的是我們人去計算)。譬如,一個位元組有8個二進位制數,而把這個位元組換算成十六進位制,它就可以用兩個十六進位制表示(1位十六進位制頂4位二進位制),不管是閱讀還是儲存都很方便。
計算機中CPU計算也是遵循ASCII字符集,是以16、32、64這樣的方式發展的,所以在資料交換時候十六進位制也顯得更好。
為了統一規範,CPU、記憶體、硬碟上我們看到的都是採用的是十六進位制。(注意說的是我們看到的)。
那十六進位制用在哪裡呢?
在這裡插入圖片描述


所以呢,除了需要學會二進位制與十進位制之間的相互轉換,還需要學會十六進位制與它們倆的相互轉換。

字元編碼

之前我們介紹過字元編碼的發展史,今天我們就細細的講一下字元編碼。
先貼一篇Alex大佬寫的部落格,可以先去看這邊部落格,講的很細,我只是總結一下。
字元編碼詳解

------------------------------------------------------------------我是分割線-----------------------------------------------------------------------------------
看完的同學…再給你們一點時間理一下,或者重新看一遍,我剛剛也去看了一遍…


好了,我們知道了如果要用日本的軟體而且不顯示亂碼,就需要 先將其解碼(decode)成unicode,再編碼(encode)成gbk,才能在我們中國的計算機上正常顯示。
在Python 2中,它的預設編碼是ASCII碼,預設的檔案編碼也是ASCII碼。如果你想正常顯示中文,就需要在檔案頭宣告使用gbk編碼。
在Python 3中,雖然檔案編碼預設是utf-8,但是讀到記憶體後會被Python直譯器自動轉成unicode(這也是為什麼極力推薦使用python 3)。
還有一個新的資料型別,bytes,它實際上是一串十六進位制資料。在python 2中,string直接就等於bytes;在Python 3中,bytes與str有了明確的區分。
在Python 2中,unicode是一個單獨的型別,用u’#你的內容

'來表示;在Python 3中,字串都是unicode,所有的unicode字元編碼後都會變成bytes格式。
切記切記!!!!