本文為基於python語言的計算機編碼方式小結,內容參考自:(
由於計算機內只能存放二進位制數字,當我們需要存放字元、阿拉伯數字、中文等等,就必須將每個字元轉化為乙個二進位制數字序列,存入計算機,而將字元轉化為二進位制序列的過程,就叫做編碼。
目前為止,我們了解到三種計算機編碼方式:ascii,unicode,utf-8。還有一種中國制定專門加入中文的編碼標準gb2312,在此不討論。
ascii是最早的編碼標準,因為計算機是美國人發明的,因此他們最早提出的這套中只有大小寫字母和阿拉伯數字以及一些最常用的符號,每個字元用乙個位元組即8位2進製數字表示。
隨著計算機技術的發展,更多的國家開始推廣計算機,因而需要一種能編碼更多語言字元的編碼方式,unicode就應運而生了。它使用2個位元組表示乙個字元,從而將各種常用語言中的字元都容納進去。
utf-8是在unicode的基礎上發展而來的,它使用1-6個位元組對字元進行變長編碼,類似於哈夫曼編碼,使用頻率越高的字元,其編碼序列越短,最短1個位元組,最長6個位元組。
unicode編碼和utf-8編碼之間的關係:在計算機記憶體中,統一使用unicode編碼,但當檔案被存入硬碟或在網路上傳輸時,就會轉換為utf-8編碼。例如,我們使用記事本編輯的時候,從檔案讀取的utf-8字元被轉換為unicode字元到記憶體裡,編輯完成後,儲存的時候再把unicode轉換為utf-8儲存到檔案。
python的字串型別是str,在記憶體中使用unicode編碼,當需要存入檔案時,會通過隱式呼叫.encode()轉化為bytes型別,python對bytes型別的資料用帶b字首的單引號或雙引號表示。`s = b'abc'`
>>> s = 'qwer'.encode('utf_8')
>>> s
b'qwer'
值得注意的是,當使用len()函式獲取字串長度時,對str型別的字串獲得的是字元個數,對轉化為bytes型別的字串則是位元組數。例如:
s = '中文'
print(len(s))
print(len(s.encode('utf-8')))
26
計算機編碼 編碼
原碼 a.規則 最高位為符號位,0為正數,1為負數,剩餘位表示資料 b.例 95 原 0101 1111 原 77 原 11001101 原 c.特點 區分正負零 缺陷 0 原 0000 0000 0 原 1000 0000 原碼可能出錯 1 原 1 原 1000 0010 原 2 d d.範圍 8...
計算機編碼
來自 阮一峰 一下對自己有用的精簡部分 1.ascii碼 在計算機內部,所有的資訊最終都表示為乙個二進位制的字串。每乙個二進位制位有0和1兩種狀態,因此八個二進位制位就可以組合出256種狀態,這被稱為乙個位元組 byte 也就是說,乙個位元組一共可以用來表示256種不同的狀態,每乙個狀態對應乙個符號...
計算機編碼
很久很久以前,有一群人,他們決定用8個可以開合的電晶體來組合成不同的狀態,以表示世界上的萬物。他們看到8個開關狀態是好的,於是他們把這稱為 位元組 再後來,他們又做了一些可以處理這些位元組的機器,機器開動了,可以用位元組來組合出很多狀態,狀態開始變來變去。他們看到這樣是好的,於是它們就這機器稱為 計...