16進製制:
#十進位制轉換成8進製:
oct ( 數字)
#十進位制轉換成16進製制:
hex( 數字)
進製轉換:
cpu、記憶體、硬碟我們看到都是採用的16進製制計算。
乙個位元組(byte)能夠用2個16進製制的數來表示。4個2進製對應1個16進製制。
編碼:所有的系統、程式語言都預設支援unicode。
編碼和解碼:
#解碼:decode()
utf-8/gbk... --> decode 解碼 -->unicode
#編碼:encode()
unicode --> encode 編碼 --> gbk / utf-8 ..
假設某python檔案是以utf-8儲存的,現在python2上執行,直譯器讀取該檔案: 先從硬碟上按照宣告的utf-8格式讀取到記憶體裡, 但此時,python2不會將讀取的utf-8格式的文字自動轉換成unicode的格式,也就是說直譯器把該檔案讀取到記憶體時 該檔案還是utf-8的格式, 此時你在windows上列印,由於windows中文版預設的終端是gbk,而列印的結果是以utf-8的格式輸出,這個時候顯示結果就會出現亂碼。
以下程式在python2上執行:
s = '哈哈哈'print s #
這個輸出結果會出現亂碼,原因如上所說
s1 = s.decode('
utf-8
') #
對 s進行解碼(就是解碼成unicode),括號內要寫明對哪種格式的編碼進行解碼(如本例中的對utf-8解碼)
print s1 #
這個列印結果就不會出現亂碼, 因為經過解碼s1已經變成了unicode的格式, 而unicode和gbk又有乙個對映關係、能夠互相相容,所以顯示結果不會出現亂碼
print type(s1) #
利用這種方法能顯示出s1的格式是unicode
s2 = s1.encode(『gbk』) #
對s1再進行編碼(就是把unicode轉換成其他型別的編碼。例如本句中的轉換成gbk),把s1轉換成gbk格式並賦值給s2(括號內要寫明編碼成的格式,例如本句中的gbk)
print s2 #
這個列印結果不會出現亂碼, 因為s2是gbk格式的,而系統預設的也是gbk, 所以能正常顯示出來。
s3 = s1.encode(『utf-8』) #
對s1進行編碼,再把s1轉換成utf-8的格式並賦值給s3
print s3 #
這個列印結果也會出現亂碼, 因為s3也是utf-8格式的,在系統預設的gbk終端中顯示會出現亂碼
總結:
python3中:檔案的預設編碼是utf-8,
讀取到記憶體裡的字串的編碼是:unicode (python3讀取到記憶體時都會自動轉成unicode)
python2中:
檔案預設編碼是:ascii
讀取到記憶體裡的字串的編碼: 預設是ascii,但是,如果檔案頭宣告了何種編碼,那讀取到記憶體裡的字串就是該種編碼(如: 假如檔案開頭宣告了是gbk,那讀取到記憶體的字串就是gbk格式)。
在python2裡面, unicode是乙個 單獨型別。
轉編碼是不可逆的。轉編碼的過程中要是出現亂碼就得重新寫,所以,不要轉編碼。
終端(terminal)是繼承作業系統的編碼
python bytes型別:
#python2:
python2中的字串其實更應該稱為位元組串;
在python2中, bytes ==str
另外, python2中還有個單獨的型別是unicode,把字串解碼後就會變成unicode
#python3:
py3除了把字串的編碼改成了unicode,還把str和bytes做了明確的區分: str就是unicode格式的字元,bytes是單純的二進位制
最後再提示一下,python只要出現各種編碼問題,無非是**的編碼設定出錯了
常見編碼錯誤的原因有:
編碼問題參考這篇文章:
16進製制位址進製
16進製制 1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 乙個位址表示乙個byte,即8bit 0x8000000033221100 77665544 bbaa9988 ffeeddcc 0x8000001076543210 0x80000000 00000000 0x80000001...
UIColor的16進製制色值,16進製制字串擴充套件
inte ce uicolor hex 16進製制字串轉化為顏色 param hexstr 16進製制字串 支援 0x.0x.return uicolor uicolor colorwithhexstring nsstring hexstr 16進製制字串轉化為顏色 param hexstr 16進...
16進製制運算
問題描述 對16進製制的字串進行加減操作.方法1 biginteger new biginteger string value,int 進製 返回biginteger值。add biginteger value 進行加運算操作。tostring int 進製 返回指定進製型別字串。這些方法組合在一起...