python第二章資料型別 字元編碼

2022-09-08 02:00:17 字數 3499 閱讀 7661

一、字元編碼

二進位制是計算技術中廣泛採用的一種數制。二進位制資料是用0和1兩個數碼來表示的數。它的基數為2,進製規則是「逢二進一」,借位規則是「借一當二」。當前的計算機系統使用的基本上是二進位制系統,資料在計算機中主要是以補碼的形式儲存的。計算機中的二進位制則是乙個非常微小的開關,用「開」來表示1,「關」來表示0。

1、ascii碼

ascii(american standard code for information interchange,美國資訊交換標準**)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,並等同於國際標準iso/iec 646。

由於這些字串長的長,短的短,寫在一起讓我們難以分清每乙個字元的起止位置,所以聰明的人類就想出了乙個解決辦法,既然一共就這255個字元,那最長的也不過是11111111八位,不如我們就把所有的二進位制都轉換成8位的,不足的用0來替換。

在這裡,每一位0或者1所佔的空間單位為bit(位元),這是計算機中最小的表示單位

每8個bit組成乙個位元組,這是計算機中最小的儲存單位(畢竟你是沒有辦法儲存半個字元

2、gbk和gb2312

gb2312是中國國家標準簡體中文字符集,由中國國家標準總局發布,1981 年 5 月 1 日實施。gb 2312 編碼通行於中國大陸;新加坡等地也採用此編碼。中國大陸幾乎所有的中文系統和國際化的軟體都支援 gb 2312。

gb 2312 標準共收錄 6763 個漢字,其中一級漢字 3755 個,二級漢字 3008 個;同時收錄了包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西里爾字母在內的 682 個字元。

2 gbk

gbk漢字內碼擴充套件規範,英文全稱 chinese internal code specification。

gbk 共收入 21886 個漢字和圖形符號,包括:

gbk 向下與 gb 2312 完全相容,向上支援 iso 10646 國際標準,在前者向後者過渡過程中起到的承上啟下的作用。

gbk 採用雙位元組表示,總體編碼範圍為 8140-fefe 之間,首位元組在 81-fe 之間,尾位元組在 40-fe 之間,剔除 xx7f 一條線。gbk 編碼區分三部分:

gbk/2:oxboa1-f7fe, 收錄 gb 2312 漢字 6763 個,按原序排列;

gbk/3:ox8140-aofe,收錄 cjk 漢字 6080 個;

gbk/4:oxaa40-feao,收錄 cjk 漢字和增補的漢字 8160 個。

gbk/1:oxa1a1-a9fe,除 gb 2312 的符號外,還增補了其它符號

gbk/5:oxa840-a9ao,擴除非漢字區。

gbk 區域中的空白區,使用者可以自己定義字元。

3 gb18030

gb 18030,全稱:國家標準 gb 18030-2005《資訊科技中文編碼字符集》,是中華人民共和國現時最新的內碼字集,是 gb 18030-2000《資訊科技資訊交換用漢字編碼字符集基本集的擴充》的修訂版。

gb 18030與 gb 2312-1980 和 gbk 相容,共收錄漢字70244個。

gb 18030 編碼是一二四位元組變長編碼。

3、unicode把所有語言都統一到一套編碼裡,這樣就不會再有亂碼問題了。

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

---新的問題又出現了:如果統一成unicode編碼,亂碼問題從此消失了。但是,如果你寫的文字基本上全部是英文的話,用unicode編碼比ascii編碼需要多一倍的儲存空間,在儲存和傳輸上就十分不划算。

4、出現了把unicode編碼轉化為「可變長編碼」的utf-8編碼。utf-8編碼把乙個unicode字元根據不同的數字大小編碼成1-6個位元組,常用的英文本母被編碼成1個位元組,漢字通常是3個位元組,只有很生僻的字元才會被編碼成4-6個位元組。如果你要傳輸的文字包含大量英文本元,用utf-8編碼就能節省空間:

5、總結一下現在計算機系統通用的字元編碼工作方式:

在計算機記憶體中,統一使用unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為utf-8編碼。

用記事本編輯的時候,從檔案讀取的utf-8字元被轉換為unicode字元到記憶體裡,編輯完成後,儲存的時候再把unicode轉換為utf-8儲存到檔案。

檔案訪問編碼轉換圖

編碼制定時間

作用所佔位元組數

ascii

2023年

表示英語及西歐語言

8bit/1bytes

gb2312

2023年

國家簡體中文字符集,相容ascii

2bytes

unicode

2023年

國際標準組織統一標準字符集

2bytes

gbk2023年

gb2312的擴充套件字符集,支援繁體字,相容gb2312

2bytes

utf-8

2023年

不定長編碼

python2中預設是ascii,python3中為utf-8

二、資料型別

1、python3保留int,沒有long, 布林型別是true 和false

2、進製轉換

bin():十進位制轉換為二進位制使用bin方法

oct():十進位制轉換為八進位制

hex():十進位制轉換為十六進製制

3、算術運算(+ - * / // divmod **)

>>> 2+3

5>>> 2-3

-1>>> 2*3

6>>> 3/2

1.5>>> 3//2

1>>> divmod(16,3)

(5, 1)

>>> 2**3

8

python divmod() 函式把除數和餘數運算結果結合起來,返回乙個包含商和餘數的元組(a // b, a % b)。

4、float  浮點型

float是有限小數或無限迴圈小數

Python第二章資料型別

基本資料型別 python 中的變數不需要宣告。每個變數在使用前都必須賦值,變數賦值 以後該變數才會被建立。python 中,變數就是變數,它沒有型別,我們所說的 型別 是變數所指的記憶體中物件的型別。等號 用來給變數賦值。等號 運算子左邊是乙個變數名,等號 運算子右邊是儲存在變數中的值。例如 x ...

第二章 資料型別

1byte 8bit 1kb 1024byte 1mb 1024kb 1gb 1024mb 1tb 1024gb intfloat 用float計算精度會不準確,需要匯入decimal模組 strbool true,false int 可以將整數型的str和float,bool轉換成int str ...

第二章 python基本資料型別

1 算數運算 返回結果 2 比較運算 返回布林值 3 賦值運算 返回結果 4 邏輯運算 返回布林值 從前往後計算 user alex pwd 123 user alex and pwd 123 or 1 1 and pwd 4523 true and true 後面出現 or 就不看後面,即為真 5...